Spring Reference 12장

A collection of 12 posts
hibernate

12.2.8. Transaction management strategies

TransactionTemplate 나 TransactionInterceptor 를 사용하든 둘 다 PlatformTransactionManager 객체를 사용하고 있습니다. Hibernate를 위해 사용할 수 있는 TransactionManager로는 두 개가 있습니다. 1. HibernateTransactionManager :: for a single Hibernate SessionFactory, using a ThreadLocal  Session under the hood 2. JtaTransactionManager :: delegating to the JTA subsystem of the container 물론 직접 PlatformTransactionManager 인터페이스를 구현해서 사용해도
3 min read
hibernate

12.2.7. Declarative transaction demarcation

이번엔 선언적인 트랜잭션 경계 설정에 관해 살펴보겠습니다. Spring AOP를 사용하는 방법으로 이전에는 Service Layer에 트랜잭션과 관련된 코드가 들어있었다면 Service Layer이 오직 자신의 본연의 임무에만 충실할 수 있도록 코드가 다음과 같이 바뛰게 됩니다. public class ProductServiceImpl implements ProductService { private ProductDao productDao; public void setProductDao(ProductDao productDao) { this.productDao = productDao; } // notice the
3 min read
hibernate

12.2.5. Implementing DAOs based on plain Hibernate3 API

Hibernate 3.0.1 에서는 “Contexture Sessions”라고 부르는, 트랜잭션 당 하나의 current 세션을 사용하는 방법이 있습니다. public class ProductDaoImpl implements ProductDao { private SessionFactory sessionFactory; public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } public Collection loadProductsByCategory(String category) { return this.sessionFactory.getCurrentSession() .createQuery("from test.Product product where product.catego
1 min read
hibernate

레퍼런스 12장에 오타

문제가 발생한 코드는 Spring Reference에 있던 소스 코드입니다. public class ProductDaoImpl extends HibernateDaoSupport implements ProductDao { public Collection loadProductsByCategory(String category) throws DataAccessException, MyException { Session session = getSession(getSessionFactory(), false); try { List result = session.find( "from test.Product product where product.category=?", category, Hibernate.STRING); if (result
2 min read
hibernate

12.2.4. Implementing Spring-based DAOs without callbacks

콜백 메소드를 사용하지 않고 HibernateDaoSupport로 부터 Session을 구해서 다음과 같이 코딩할 수 있습니다. public class ProductDaoImpl extends HibernateDaoSupport implements ProductDao { public Collection loadProductsByCategory(String category) throws DataAccessException, MyException { Session session = getSession(getSessionFactory(), false); try { List result = session.find( “from test.Product product where product.category=?”, category, Hibernate.STRING); if (result
2 min read
hibernate

12.2.3. The HibernateTemplate

이 전 글에서 Spring Container에 등록한 SessionFactoryBean을 사용하여 HibernateTemplate을 생성할 수 있습니다. 따라서 HibernateTemplate을 사용할 DAO 클래스에 setter injection을 사용하기 위해 보통 다음과 같이 설정합니다. 어플리케이션에서 사용할 때는 다음과 같이 콜백을 사용하여 session에 접근합니다. public class ProductDaoImpl implements ProductDao { private HibernateTemplate hibernateTemplate; public void setSessionFactory(SessionFactory
3 min read
hibernate

12.2.1. Resource management

자원을 관리하는 코드가 보통 사방에 흩어져 있게 됩니다. 하지만 스프링에서는 이런 자원 관리간단하면서도 강력한 방법인 tamplate을 사용한 IoC를 이용해서 관리합니다. 자원을 관리하는 기능과 SQLException을 보다 구체적이고 un-checked Exception인 DataAccessException으로 래핑해줍니다. HibernateTemplate [http://static.springframework.org/spring/docs/2.0.x/api/org/springframework/orm/hibernate/HibernateTemplate.html] , HibernateInterceptor [http://static.
1 min read
ORM

12.1. Introduction

ORM DAO를 만들 때 Spring Framwork를 사용하면… – 테스트 하기 편합니다. Spring IoC 컨테이너를 사용할 수 있기 때문에 퍼시스턴스 관련 코드를 고립된(isolated) 상태로 테스트를 하는 것이 훨씬 용이합니다. -Data Access Exception을 제공합니다. ORM에서 발생하는 checked 예외를 감싸서 unchecked 예외인 DataAccessException 을 발생 시킵니다. 예외 처리하고 싶으면 해도 되고 안 해도
2 min read