12.1. Introduction
ORM DAO를 만들 때 Spring Framwork를 사용하면...
- 테스트 하기 편합니다.
Spring IoC 컨테이너를 사용할 수 있기 때문에 퍼시스턴스 관련 코드를 고립된(isolated) 상태로 테스트를 하는 것이 훨씬 용이합니다.
-Data Access Exception을 제공합니다.
ORM에서 발생하는 checked 예외를 감싸서 unchecked 예외인 DataAccessException 을 발생 시킵니다. 예외 처리하고 싶으면 해도 되고 안 해도 되기 때문에 try/catch 문을 제거 할 수 있습니다.
-일관된 자원 관리를 할 수 있습니다.
Spring은 Hibernate를 위한 SessionFactory, JDBC를 위한 DataSource, iBatis SQL Maps 설정과 속성을 위한 자원(resource)를 관리할 수 있습니다. 따라서 이들의 관리와 변경이 용이합니다.
-통합된 트랜잭션 관리를 할 수 있습니다.
O/R mapping 코드를 선언적인 방법 또는 프로그래밍 적인 방법의 트랜잭션 관리로 감쌀 수 있습니다. 두 방법 중 어떤 걸 사용하든 모두 원하는 대로 트랜잭션을 설정할 수 있으며 예외가 발생했을 때 원하는데로 처리(ex. 롤백) 할 수 있습니다. 또한 Hibernate나 JDO 관련 코드의 변경 없이 트랜잭션 관리자만 바꿀 수 있습니다.
이것에 대한 예제는 Spring 소스코드를 받으면 딸려 오는 sample 코드 중에 jpetstore 와 petclinic에 보시면 나와있습니다.