티스토리 뷰

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
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함