내용으로 건너뛰기
권남
사용자 도구
로그인
사이트 도구
검색
도구
문서 보기
이전 판
역링크
최근 바뀜
미디어 관리자
사이트맵
로그인
>
최근 바뀜
미디어 관리자
사이트맵
추적:
springframework:jpa
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
====== SpringFramework와 JPA ====== * [[java:jpa|JPA]] * [[java:jpa:springdatajpa|Spring Data JPA]] * [[http://www.baeldung.com/the-persistence-layer-with-spring-and-jpa|A Guide to Hibernate with Spring 4 | Baeldung]] ===== EntityManager 주입 ===== <code java> // EntityManager의 프록시 주입 @PersistenceContext EntityManager em; </code> ===== 예외 변환(Hibernate 연동에서도 동일) ===== * DAO 클래스에 ''@Repository'' 어노테이션을 부여한다. * ''PersistenceExceptionTranslationPostProcessor''를 등록해줘야 한다. 이렇게 하면 ''@Repository'' 클래스들에 대해 자동으로 예외를 Spring의 ''DataAccessException''으로 일괄 변환해준다.<code xml> <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" /> </code> * 예외 변환이 정확하게 이뤄지지는 않지만 ''[[http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/dao/OptimisticLockingFailureException.html|OptimisticLockingFailureException]]''은 제대로 된다. * 현재, Spring Data JPA를 사용하고 있는데, 빈 등록을 명시적으로 안해도 ''PersistenceExceptionTranslationPostProcessor''가 자동 등록되고 있다. 느낌상으로는 XML 설정시에 어떠한 설정하나가 자동으로 등록해주는 듯 하다. * Spring Data JPA Java Config시에는 ''PersistenceExceptionTranslationPostProcessor''를 직접 등록해줘야 하는 것으로 보인다. -> 안해도 되는 듯 하다. 버전을 타는 것인지 다른 어떤 설정 때문인지 확인이 필요하다. * **이 문제에 관해 일부러 SQL Exception을 발생시켜 예외가 Spring 예외로 변환되는지 테스트** 해볼 것. * 거의 모든 리소스 팩토리(''LocalContainerEntityManagerFactoryBean'' 포함) 대부분 ''PersistenceExceptionTranslator''를 직접 구현하고 있어서 Translator 자체를 따로 등록할 필요는 없다. ===== OpenEntityManagerInView ===== * View 까지 Lazy Loading이 작동하려면 OpenEntityManagerInView를 적용해야 한다. 이는 Hibernate의 OpenSessionInView와 같다. Filter나 Interceptor 중에 선택하여 적용한다. * ''org.springframework.orm.jpa.support.OpenEntityManagerInViewInterceptor'' * ''org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter''
springframework/jpa.txt
· 마지막으로 수정됨: 2018/03/07 08:42 저자
kwon37xi
문서 도구
문서 보기
이전 판
역링크
맨 위로