스프링 2.5 환경에서 하이버네이트 사용하기
참조 요약: Spring One 2008 Wokring With Hibernate in a Spring 2.5 Environment
스프링의 HibernateTemplate
(Hibernate 3.1 이전)
- 스프링이 관리하는 트랜잭션을 사용한다.
- 예외 번역 제공
public class HibernateClinic extends HibernateDaoSupport {
...
}
Native Hibernate DAO
(Hibernate 3.1+_
- 트랜잭션 훅(hook)을 제공한다.
- transactional session을 찾는 로직을 제공할 수 있게 한다. sessionFactory.getCurrentSession()
- 예외 번역 제공 @Repository PersistenceExceptionTranslation post processor
- 순수 하이버네이트 API만 사용할 수 있다.
단위 테스트 종류
- "Logical" 단위 테스트
- 통합 테스트
스프링으로 통합 테스트하기
- DI
- 애플리케이션 컨텍스트 로딩 줄이기
- 자동 롤백
- 하이버네이트 + JDBC 조합
AbstractTransactionalDataSourceSpringContextTests
- Ctrl + Shift + T ATDSSCT
- 애플리케이션 컨텍스트 로딩, 캐슁
- DI
- JdbcTemplate 제공
WAR에서 하이버네이트 VS OSGi 개발
- 일반 WAR 배포
- SessionFactory가 클래스패스에 도메인 타입들을 찾는다.
- 저장소(DAO, repositoru)들이 SessionFactory를 사용한다.
- OSGi 개발
- 여러 도메인 번들로 쪼갠다.
- SessionFactory는 도메인 타입에 접근해야 한다.
- 저장소는 SessionFactory에 접근해야 한다.
OSGi 환경에서 하이버네이트
- "infrastructure" 번들
- SessionFactory 서비스를 제공하고
- 모든 도메인 타입을 가져온다.
- 여러 도메인 모델
- 도메인 타입을 공개한다.
- SessionFactory 서비스를 사용한다.
- Petclinic 예제를 제공한다.
=====
발표에서 다루는 내용이 너무 많아서 다소 산만했습니다. 하이버네이트만 집중적으로 다뤘으면 어땠을까 싶더군요. @Repository 얘기가 나오니까 컴포넌트 스캔 얘기로 새고.. 도메인 객체에 repository 객체 주입하는 얘기가 나오니까 @Configurable이랑 aspectj 얘기로 새고.. 테스트 얘기 나오니까 Test Context 쪽으로 또 얘기가 새버렸다가 나중엔 다시 하이버네이트랑 OSGi 얘기 조금 꺼내고 끝~~
멋진건 54분이라는 짧은 발표 시간 중에도 저렇게 많은 내용과 중간 중간 전부 데모까지 보여줬다는 겁니다.