HibernateTemplate在spring xml bean的编写:
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
在HibernateTemplate类的父类HibernateAccessor中存在 sessionFactory的get和set方法,可以直接注入sessionFactory:
/**
* Set the Hibernate SessionFactory that should be used to create
* Hibernate Sessions.
*/
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
/**
* Return the Hibernate SessionFactory that should be used to create
* Hibernate Sessions.
*/
public SessionFactory getSessionFactory() {
return this.sessionFactory;
}
在项目dao层中不再需要直接使用sessionFactory了,可以使用HibernateTemplate 从中获得sessionFactory
在使用HibernateTemplate封装好的save update等方法:
public class HibernateTemplateDaoImpl implements HibernateTemplateDao {
private HibernateTemplate hibernateTemplate ;
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
public void hibernateTemplate() {
// TODO Auto-generated method stub
User user = new User();
user.setAddress("huangxxx");
user.setCode("csoJDPJFDSPFJI");
user.setEmail("xoapfemg@rma.cpom");
user.setName("xxxx");
this.hibernateTemplate.save(user);
System.out.println("HibernateTemplateDao--------");
}
}
另外注意在封装中将所有的异常全部抛出为:
DataAccessException 方便进行管理
例如:
public Serializable save(final Object entity) throws DataAccessException {
return (Serializable) executeWithNativeSession(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
checkWriteOperationAllowed(session);
return session.save(entity);
}
});
}