본문 바로가기

JPA38

spring boot, jpa, querydsl 정리 - 2편 조인 예제 (연관관계 없음) 이 문서는 추후 다시 볼 목적으로 정리한 글입니다. 조인 예제 (연관관계 없음) 서로 다른 두 테이블을 조인하는 예제. 조인해서 member id 로 조회. member 와 address 가 있으며, 둘은 1:1 라 가정. Entity source public interface MemberRepositoryCustom { List findByTelNo(String telNo); MemberInfo findMemberInfo(String id); } @RequiredArgsConstructor public class MemberRepositoryImpl implements MemberRepositoryCustom { private final JPAQueryFactory queryFactory; @Overr.. 2020. 7. 11.
spring-boot, Jpa 정리 - Transaction 묶음 시행 착오 Spring, Spring Boot 의 시작점을 통해 시작하지 않는다면, @Transactional 어노테이션이 안먹는거 같음. 이를 통해 트랜잭션 매니저가 제대로 설정 안되면 위 @Transactional 이 적용안된 것을 알 수 있었음. 처음 내가 의도한 바는 repository interface 를 통해 @Transactional 로 묶는거였음. 근데 안묶임. WebService 만들 때는 잘 묶였는데 jpa 만 떼어다가 쓸려니 안먹힘. 추후 왜 @Transactional 이 안먹히는지 원인 파악 해보기. source EntityManager 생성은 spring-boot 의 AutoConfiguration 을 이용했고, EntityManagerFactory 를 가져와서 EntityMana.. 2020. 7. 11.
spring-boot, Jpa 정리 - Integrate test (Jpa 통합 테스트) 나중에 볼 용도로 정리한 것. Jpa 통합 테스트 세팅 방법 Jpa 단독 (repository) 으로 테스트 하고 싶다면, @DataJpaTest 를 사용 @DataJpaTest 를 사용한다면 단독으로 repository bean 초기화가 일어나고 사용할 수 있음. 여기서는 서비스 테스트를 위해 통합 테스트 하는 방법을 설명 source 간략히 설명하면 @SpringBootTest 를 수행하면 @SpringBoot 와 비슷한 과정을 겪게 됨. (Scan, Bean initialize 등) 아래와 같이 어노테이션을 설정해두면 빈 초기화가 일어나면서 repository, 서비스 등 빈 초기화가 일어 남. 단, 이 때, 주의할 점은 반드시 Bean 에 등록해야한다. 자바 new 로 생성해버리면 빈에 등록이 안.. 2020. 7. 11.
spring-boot, Jpa 정리 - Insert, Update bulk 처리 나중에 볼 용도로 정리했습니다. Jpa Insert, Update bulk 처리 Jpa 배치 관련 옵션 설명 hibernate.order_inserts=true hibernate.order_updates=true 위 옵션은 insert, update statement 를 처리할 때 정렬을 하겠다는 의미이다. 정렬을 하는 이유는 성능을 높이기 위함. 어떻게 성능을 높이는지는 다음과 같다. Family family = new Family(); family.setParent(parent); family.setChild(child); xxxRepository.save(family); 위 예시는 다음과 같이 동작한다. insert into Family (xxx) insert into parent (xxx) ins.. 2020. 7. 11.