Spring Framework/Spring

Spring Framework/Spring

Spring Data JPA 연관관계 초기화 문제와 도메인 모델 설계 시 주의사항

Spring JPA를 사용했을 때 주의해야 할 점에 대해 정리하고자 합니다.도메인 모델을 반영했을 때 연관관계 참조 방식에서 발생하는 불필요한 쿼리나 left join을 겪으며 이를 해결한 과정을 작성하였습니다.1. Naming Query에서 발생하는 불필요한 Left Join 발생interface ThreadJpaRepository : JpaRepository { fun findByUserId(userId: Long): List}위 findByUserId()를 통해 쿼리를 요청하면 아래와 같이 left join이 발생합니다. @Entity@Table(name = "threads")class ThreadEntity( @Id @GeneratedValue(strategy = GenerationT..

Spring Framework/Spring

도메인(Domain)이란? Entity와 Value Object 개념과 모델 이해하기

도메인이란소프트웨어로 해결하고자 하는 문제 영역이라 할 수 있다.실제 세상의 특정 ‘문제 영역’ 또는 주제 영역’이라 할 수 있다. 쇼핑몰 시스템에서 회원, 주문, 배송, 결제 등을 도메인이라 할 수 있다. 도메인 모델을 사용하는 이유도메인 모델을 이용하면 여러 관계자들이 동일한 모습으로 도메인을 이해하고 도메인 지식을 공유하는 데 도움이 된다.핵심 규칙을 구현한 코드를 도메인 모델에 위치시켜, 규칙이 바뀌거나 확장해야 할 때 다른 코드에 영향을 덜 주고 변경 내역을 모델에 반영할 수 있다. 문서화의 중요성문서화의 주 목적은 “지식을 공유하는 것”이다.코드에 대한 상세한 내용을 작성하기보다는 상위 수준에서 소프트웨어의 흐름을 잘 표현하여 전체 구조를 이해하는 데 돕는 것이 중요하다. 엔티티소프트웨어에서 ..

Spring Framework/Spring

Java POJO와 Spring POJO 이해하기, 의존성 줄이기

POJO란POJO is “Plain Old Java Object”특정 기술에 의존하지 않는 순수한 자바 객체를 의미합니다.오직 필드, 생성자, getter/setter, 일반 메서드만으로 구성된 객체입니다.POJO is a straightforward type with no references to any particular frameworks. POJO has no naming convention for our properties and methodspublic class EmployeePojo { public String firstName; public String lastName; private LocalDate startDate; public EmployeePojo(Strin..

Spring Framework/Spring

Spring Transaction Propagation 속성과 동작 방식: Required, Required_new

Transaction Propagation Type트랜잭션 전파란 트랜잭션이 진행 중일 때 추가 트랜잭션 진행을 어떻게 할지 결정하는 것입니다. Required @Transactional의 propogation 기본값이다.실행 중인 트랜잭션 있는 경우기존 트랜잭션 참여없는 경우새 트랜잭션 생성 Required_new실행 중인 트랜잭션 있는 경우새 트랜잭션 생성없는 경우새 트랜잭션 생성always uses an independent physical transaction for each affected transaction scope, never participating in an existing transaction for an outer scope. 외부 트랜잭션 & 내부 트랜잭션외부 트랜잭션 & 내부 ..