N+1
-
고급 주제와 성능 최적화IT/JPA 2021. 2. 28. 19:32
1. 예외처리 1. JPA 표준 예외 정리 - JPA의 표준 예외는 Javax.persistence.PresistenceException 의 자식클래스 이며, RuntimeException 을 상속받는다. - JPA 표준 예외는 크게 트랜잭션 롤백을 표시하는 예외, 표시하지 않는 예외 2가지로 나눌 수 있다. - 트랜잭션 롤백을 표시하는 예외 : 심각한 예외이므로 복구해선 안된다. 트랜잭션을 강제 커밋해도 커밋되지 않고, javax.persistence.RollbackException 예외가 발생한다. - 트랜잭션 롤백을 표시하지 않는 예외 : 심각한 예외가 아니다. 개발자가 트랜잭션을 커밋할지 롤백할지 정하면 된다. 2. 스프링 프레임워크의 JPA 예외 변환 - 서비스 계층에서 데이터 접근 계층의 구현..
-
웹 애플리케이션과 영속성 관리IT/JPA 2021. 1. 24. 21:40
1. 트랜잭션 범위의 영속성 컨텍스트 1) 스프링 컨테이너의 기본전략 - 스프링 컨테이너는 트랜잭션 범위의 영속성 컨텍스트 전략을 기본으로 사용한다. - 트랜잭션을 시작할 때 영속성 컨텍스트를 생성하고, 트랜잭션이 끝날 때 영속성 컨텍스트를 종료한다. - 같은 트랜잭션 안에서는 항상 같은 영속성 컨텍스트에 접근한다. - 스프링 프레임워크에서는 보통 서비스 계층에 @Transactional 어노테이션을 선언한다. 호출한 메소드를 실행하기 직전에 스프링의 트랜잭션 AOP가 먼저 동작한다. - 스프링 트랜잭션 AOP는 대상 메소드를 호출하기 직전에 트랜잭션을 시작하고, 대상 메소드가 정상 종료되면 트랜잭션을 커밋하면서 종료한다. - 트랜잭션을 커밋하면 JPA는 먼저 영속성 컨텍스트를 플러시 해서 변경내용을 데..