在Hibernate中使用 HibernateTemplate的三种方法
2010-04-20 12:14
471 查看
在我们的项目中,经常要从HibernateDaoSupport继承然后使用他的HibernateTemplate给我们封装好的方法。
我们以用户模块的持久层UserDao这个类的addUser(User user)方法为例:
第一种方法:userDao extends HibernateDaoSupport:(不推荐使用)
我们知道继承这个类,必须给他注入一个HibernateTemplate的对象,或者是SessionFactory对象但是
HibernateDaoSupport这个类的所有的方法都是final的,无法重写他的
setSessionFactory(SessionFactory
sessionFactory)方法来注入,只能使用xml的方式来生成userDao这个对象的时候,使用<property id
="xxx"
ref="xxx">来注入这个对象,但是如果这样,如果我们的Dao层的类特别多,都需要在xml文件中进行配置我们的xml配置文件就会十分的
庞大 臃肿
第二种方法:
public class BaseDao extends HibernateDaoSupport {
@Resource(name="sessionFactory")
public void setSF(SessionFactory sessionFactory) {
super.setSessionFactory(sessionFactory);
}
}
我们抽取出来一个Dao层的基类然后让这个类继承HibernateDaoSupport,然后我们自己随便写个方法参数是
SessionFactory,然后再方法上面加入@Resource注解,把SessionFactory对象,注入到这个方法中来然后再这个方法中调
用父类中也就是HibernateDaoSupport 中的setSessionFactory(SessionFactory
sessionFactory)方法把sessionFactory给他注入进去。默认情况下@Resource注解是按照名称来注入的,但是这个时候我
们自己写的这个方法无法与spring配置文件中的id名称匹配起来就会按照类型进行注入了。然后我们的UserDao类继承我们的BaseDao类就可
以使用HibernateTemlate中的方法了。
第三种方法:
public class BaseDao {
private HibernateTemplate hibernateTemplate;
@Resource
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
}
还是抽取出一个BaseDao的类,然后我不继承HibernateDaoSupport这个类了。我在这个类中,定义一个
HibernateTemplate类型的属性,然后把这个类注入进来,UserDao等这些持久化类仍然是从这个类继承,就可以使用
HibernateTemplate中的方法了。
我们以用户模块的持久层UserDao这个类的addUser(User user)方法为例:
第一种方法:userDao extends HibernateDaoSupport:(不推荐使用)
我们知道继承这个类,必须给他注入一个HibernateTemplate的对象,或者是SessionFactory对象但是
HibernateDaoSupport这个类的所有的方法都是final的,无法重写他的
setSessionFactory(SessionFactory
sessionFactory)方法来注入,只能使用xml的方式来生成userDao这个对象的时候,使用<property id
="xxx"
ref="xxx">来注入这个对象,但是如果这样,如果我们的Dao层的类特别多,都需要在xml文件中进行配置我们的xml配置文件就会十分的
庞大 臃肿
第二种方法:
public class BaseDao extends HibernateDaoSupport {
@Resource(name="sessionFactory")
public void setSF(SessionFactory sessionFactory) {
super.setSessionFactory(sessionFactory);
}
}
我们抽取出来一个Dao层的基类然后让这个类继承HibernateDaoSupport,然后我们自己随便写个方法参数是
SessionFactory,然后再方法上面加入@Resource注解,把SessionFactory对象,注入到这个方法中来然后再这个方法中调
用父类中也就是HibernateDaoSupport 中的setSessionFactory(SessionFactory
sessionFactory)方法把sessionFactory给他注入进去。默认情况下@Resource注解是按照名称来注入的,但是这个时候我
们自己写的这个方法无法与spring配置文件中的id名称匹配起来就会按照类型进行注入了。然后我们的UserDao类继承我们的BaseDao类就可
以使用HibernateTemlate中的方法了。
第三种方法:
public class BaseDao {
private HibernateTemplate hibernateTemplate;
@Resource
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
}
还是抽取出一个BaseDao的类,然后我不继承HibernateDaoSupport这个类了。我在这个类中,定义一个
HibernateTemplate类型的属性,然后把这个类注入进来,UserDao等这些持久化类仍然是从这个类继承,就可以使用
HibernateTemplate中的方法了。
相关文章推荐
- 使用Hibernate获取最大值(max)的三种方法
- Hibernate 中使用 HibernateTemplate的三种方法
- 在Hibernate中使用 HibernateTemplate的三种方法
- Hibernate 中使用 HibernateTemplate的三种方法
- 使用Hibernate注解来配置多对一单向的三种方法
- 使用Hibernate获取最大值(max)的三种方法
- 关于Hibernate的merge() attachDirty() attachClean()三种方法比较使用
- 在Hibernate中使用 HibernateTemplate的三种方法
- Spring+Hibernate DAO 持久层开发, Spring 用 Hibernate 访问数据库的三种方法.推荐使用回调
- 使用Hibernate获取最大值(max)的三种方法(转载)
- Spring+Hibernate DAO 持久层开发, Spring 用 Hibernate 访问数据库的三种方法.推荐使用回调
- 使用Hibernate获取最大值(max)的三种方法
- 使用Hibernate获取最大值(max)的三种方法
- 使用Hibernate获取最大值(max)的三种方法
- Hibernate基础使用:CRUD方法及实体对象的三种状态
- 使用Hibernate注解来配置多对一单向的三种方法
- 在Hibernate中使用 HibernateTemplate的三种方法
- Hibernate -- 使用Hibernate获取最大值(max)的三种方法(转)
- iphone 三种数据持久化的方法使用
- 关于Hibernate使用组合主键时,组合主键中有些字段为null时的解决方法