Spring 在Hibernate上实现的Template-callback机制上提供有

Spring在Hibernate上实现的Template-callback机制上提供有org.springframework.orm.hibernate3.HibernateTemplate类别与org.springframework.orm.hibernate3.HibernateCallback介面,一个使用的例子如下:

HibernateTemplatehibernateTemplate=newHibernateTemplate(sessionFactory);

...

hibernateTemplate.execute(

newHibernateCallback(){

publicObjectdoInHibernate(Sessionsession)throwsHibernateException{

returnsession.load(User.class);

}

}

);

在HibernateTemplate上也提供有数个方便的方法,在呼叫时为您自动建立HibernateCallback物件,例如get()、save、delete()等方法,您可以改写SessionFactory注入的UserDAO类别,使用HibernateTemplate来简化程式的撰写:

*UserDAO.java

importorg.hibernate.SessionFactory;

importorg.springframework.orm.hibernate3.HibernateTemplate;

publicclassUserDAOimplementsIUserDAO{

privateHibernateTemplatehibernateTemplate;

publicvoidsetSessionFactory(SessionFactorysessionFactory){

hibernateTemplate=newHibernateTemplate(sessionFactory);

}

publicvoidinsert(Useruser){

hibernateTemplate.save(user);

}

publicUserfind(Integerid){

Useruser=(User)hibernateTemplate.get(User.class,id);

returnuser;

}

}

其它的档案并不需要修改,执行的结果也是相同的,您必须在Classpath中加入spring-orm.jar档案才可以执行。

您可以继承org.springframework.orm.hibernate3.support.HibernateDaoSupport类别来撰写UserDAO类别,这可以帮您省去一些管理SessionFactory、HibernateTemplate资源的工作,您只要注入SessionFactory的实例就可以了,例如将上面的UserDAO替代为以下的内容,则程式也是可以执行:

importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;

publicclassUserDAOextendsHibernateDaoSupportimplementsIUserDAO{

//没有HibernateTemplate的定义等操作了,在父类中已经完成

publicvoidinsert(Useruser){

getHibernateTemplate().save(user);

}

publicUserfind(Integerid){

Useruser=(User)getHibernateTemplate().get(User.class,id);

returnuser;

}

}

http://blog.sina.com.cn/s/blog_3ff3946a01009l70.html

相关推荐