HibernateTemplate_HibernateCallback_HibernateDaoSupport (http://blog.sina.com.cn/s/blog_8020e411010)

在Spring中可以在Spring中可以使用Hibernate模板来简化开发:
 
应用到的设计模式:Template Method
http://blog.sina.com.cn/s/blog_8020e41101012o1g.html
      Callback:回调/钩子函数
       第一种:(建议)
1.     在spring中初始化HibernateTemplate,注入sessionFactory
2.     DAO里注入HibernateTemplate
3.     save写getHibernateTemplate.save();
 
beans.xml:
--------------------------------------------------
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
  <property name="sessionFactory" ref="sessionFactory"></property>
 </bean>
 
使用:
--------------------------------------------------
@Component("u")
public class UserDAOImpl implements UserDAO {
 private HibernateTemplate hibernateTemplate;
 
 public HibernateTemplate getHibernateTemplate() {
  return hibernateTemplate;
 }


 @Resource
 public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
  this.hibernateTemplate = hibernateTemplate;
 }
 
 public void save(User user) {
  
   hibernateTemplate.save(user);
   
 }
}
 
  第二种:(可以不用)
 从HibernateDaoSupport继承
 必须写在xml文件中,无法使用Annotation,因为set方法在父类中,而且是final的
 在XML中也无法生成HibernateDaoSupport对象,因为该类为abstract
 HibernateDaoSupport内部也是使用HibernateTemplate实现
 
实现:定义SuperDAO里面封装HibernateTemplate对象,并注入


@Component
public class SuperDAO {
 private HibernateTemplate hibernateTemplate;
 public HibernateTemplate getHibernateTemplate() {
  return hibernateTemplate;
 }
 
 @Resource
 public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
  this.hibernateTemplate = hibernateTemplate;
 }
 
}
 
使用时:继承SuperDAO
---------------------------------------------
@Component("u")
public class UserDAOImpl extends SuperDAO implements UserDAO {
 public void save(User user) {
  
   this.getHibernateTemplate().save(user);
   
 }
}
使用第二种时,需注意:统一使用XML方式或统一用Annotation方式,不能混用
尤其是子类和父类关系,不要XML与Annotation同用
HibernateDaoSupport需要注入SessionFactory或HibernateTemplate其中一种
@Component
public class SuperDAO extends HibernateDaoSupport {
 
 
 @Resource(name="sessionFactory")
 public void setSuperSessionFactory(SessionFactory sessionFactory) {
  super.setSessionFactory(sessionFactory);
 }
 
 
}使用Hibernate模板来简化开发:

 

应用到的设计模式:Template Method

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

      Callback:回调/钩子函数

       第一种:(建议)

1.     在spring中初始化HibernateTemplate,注入sessionFactory

2.     DAO里注入HibernateTemplate

3.     save写getHibernateTemplate.save();

 

beans.xml:

--------------------------------------------------

<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
  <property name="sessionFactory" ref="sessionFactory"></property>
 </bean>

 

使用:

--------------------------------------------------

@Component("u")
public class UserDAOImpl implements UserDAO {

 private HibernateTemplate hibernateTemplate;

 

 public HibernateTemplate getHibernateTemplate() {
  return hibernateTemplate;
 }


 @Resource
 public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
  this.hibernateTemplate = hibernateTemplate;
 }

 

 public void save(User user) {
  
   hibernateTemplate.save(user);
   
 }

}

 

  第二种:(可以不用)

 从HibernateDaoSupport继承

 必须写在xml文件中,无法使用Annotation,因为set方法在父类中,而且是final的

 在XML中也无法生成HibernateDaoSupport对象,因为该类为abstract

 HibernateDaoSupport内部也是使用HibernateTemplate实现

 

实现:定义SuperDAO里面封装HibernateTemplate对象,并注入


@Component
public class SuperDAO {
 private HibernateTemplate hibernateTemplate;

 public HibernateTemplate getHibernateTemplate() {
  return hibernateTemplate;
 }
 
 @Resource
 public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
  this.hibernateTemplate = hibernateTemplate;
 }
 
}

 

使用时:继承SuperDAO

---------------------------------------------

@Component("u")
public class UserDAOImpl extends SuperDAO implements UserDAO {

 public void save(User user) {
  
   this.getHibernateTemplate().save(user);
   
 }

}

使用第二种时,需注意:统一使用XML方式或统一用Annotation方式,不能混用

尤其是子类和父类关系,不要XML与Annotation同用

HibernateDaoSupport需要注入SessionFactory或HibernateTemplate其中一种

@Component
public class SuperDAO extends HibernateDaoSupport {
 
 
 @Resource(name="sessionFactory")
 public void setSuperSessionFactory(SessionFactory sessionFactory) {
  super.setSessionFactory(sessionFactory);
 }
 
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值