티스토리 뷰
Springi Hibernate 8-9 Hibernate와 Spring 연동
Data Source 등록
Spring JDBC나 iBatis와 동일함.
SessionFactoryBean 등록
두가지 방법을 제공함.
SessionFactoryBean | 설명 |
LocalSessionFactoryBean | XML 기반의 매핑 정보를 이용해서 SessionFactory 객체를 생성한다. |
AnnotationSessionFactoryBean | XML 기반의 매핑 설정과 Annotation 기반의 매핑 설정을 이용해서 SessionFactory 객체를 생성한다. |
AnnotationSessionFactoryBean
applicationContext.xml |
<beans ...> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="annotatedClasses"> <list> <value>com.multicampus.board.view.entity.board.Board</value> <value>com.multicampus.board.view.entity.user.User</value> </list> </property> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop> <prop key="hibernate.show_sql">true</prop> </props> </property> </bean> </beans> |
Hibernate Transactio Manager 등록
JtaTransactionManager로 직접 트랜잭션을 관리하지 않을 거라면 HibernateTransactionManager 클래스를 등록해야 함.
applicationContext.xml |
<beans ...> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" sessionFactory-ref="sessionFactory" /> </beans> |
HibernateTemplate 등록
Hibernate 기반 DAO클래스에서 Hibernate를 쉽게 사용할 수 있도록 Spring이 제공하는 클래스
HibernateTemplate은 sessionFactory 속성을 가지고 있음
이전에 생성한 SessionFactoryBean을 이곳에 의존성 주입해야 함.
applicationContext.xml |
<beans ...> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory" ref="sessionFactory"/> </bean> </beans> |
DAO 클래스 작성
HibernateDaoSupport 클래스를 상속받아 작성함.
의존성 주입된 hibernateTemplate 객체를 이용하여 처리함.
BoardDAOHibernate.java |
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.orm.hibernate3.HibernateTemplate; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.springframework.stereotype.Repository; @Repository public class BoardDAOHibernate extends HibernateDaoSupport implements BoardDAO { @Autowired public BoardDAOHibernate(HibernateTemplate hibernateTemplate){ super.setHibernateTemplate(hibernateTemplate); } public void addBoard(Board board) throws Exception { getHibernateTemplate().save(board); } public ArrayList<Board> getBoardList(Board board) throws Exception { ArrayList<Board> boardList = (ArrayList<Board>)getHibernateTemplate().find("from Board"); return boardList; } } |
@Repository를 적용하는 Hibernate에서 발생되는 Exception을 Spring이 지원하는 DataAccessException으로 변환할 수 있음.
이를 위해 PersistenceExceptionTranslationPostProcessor bean을 Spring 설정 파일에 등록해야 함.
applicationContext.xml |
<beans ...> <bean class="org.springframework.dao.annotation.PersistenceExcpetionTranslationPostProcessor" /> </beans> |
'Note' 카테고리의 다른 글
세포주기 조절 (0) | 2023.03.31 |
---|---|
Springi Hibernate 8-8 HQL(Hibernate Query Language) (0) | 2023.03.30 |
고위험병원체의 종류 (0) | 2023.03.12 |
마케팅관리, 글로벌화의 개념과 성격 (0) | 2023.03.12 |
국민건강증진법 (0) | 2023.03.11 |