`

在Hibernate中使用HibernateTemplate的三种方法

阅读更多
在我们的项目中,经常要从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中的方法了。
分享到:
评论
4 楼 longdechuanren 2010-04-19  
呵呵 谢谢提醒,确实是这样的 整理的时候没有注意!
3 楼 aaronbamboo 2010-04-19  
lz有笔误,第三种方法不集成HibernateDaoSupport,但是代码却还是继承了。
2 楼 longdechuanren 2010-04-19  
不用那么大的压力呀,仁者见仁,智者见智用注解是因为他方便省去了些繁琐的xml文件的步骤,但是单从理解的角度来看的话,用xml文件更容易理解,这个在hibernate的注解和xml配置文件中就能看出来。但是如果你们项目组的其他人都用注解你用xml,那整合就比较难了,不支持一半是注解一半是xml配置文件的形式把 呵呵!
1 楼 Angel_Night 2010-04-19  
现在都流行用注解了

还是因为现在 网上的入门视频 讲注解的 为主流?

作为一个写了多年配置文件的程序员 我感觉压力很大

相关推荐

    对hibernate的封装 HibernateTemplate

    在使用HibernateTemplate之前,需要配置SessionFactory,并将其注入到HibernateTemplate实例中。以下是一个简单的例子: ```java @Autowired private HibernateTemplate hibernateTemplate; public void saveUser...

    HibernateTemplate的方法使用

    **HibernateTemplate** 是 Spring 框架中用于简化 Hibernate 使用的一个工具类。它通过 AOP(面向切面编程)的思想,封装了大量的 CRUD(创建、读取、更新、删除)操作,使得开发者能够更加专注于业务逻辑的实现,而...

    Spring_Spring_Hibernate_HibernateTemplate

    在Java企业级开发中,Spring框架和Hibernate持久层框架的结合使用是常见的技术选型。本篇将深入探讨Spring与Hibernate的集成,特别是Spring提供的HibernateTemplate,它是Spring对Hibernate的一种封装,简化了数据库...

    hibernateTemplate的常用方法

    `HibernateTemplate`是Spring框架中用于操作Hibernate的一个便捷工具类,它极大地简化了Hibernate在实际应用中的集成与开发工作。通过`HibernateTemplate`,开发者可以非常方便地进行数据的增删改查等基本操作,而...

    关于使用HibernateTemplate

    3. **异常处理**:当使用`HibernateTemplate`执行数据库操作时,它会自动捕获并处理Hibernate抛出的各种异常,从而减轻了开发者在异常处理上的负担。 #### 三、声明式事务管理 `HibernateTemplate`支持声明式事务...

    HibernateTemplate汇总

    HibernateTemplate 是 Spring 框架中的一個关键组件,用于简化 Hibernate 的使用,提供了許多实用的方法来进行数据库操作。在本文中,我们将对 HibernateTemplate 的主要方法进行总结和解释。 ...

    Spring_2000_Spring_Hibernate_HibernateTemplate

    读者可以通过这个文档了解Spring和Hibernate在2000年左右的版本中的使用,以及如何有效地利用HibernateTemplate进行数据操作。 总结来说,这个主题涵盖了Spring框架的基本原理、核心特性,以及在2000年左右如何与...

    HibernateTemplate详细描述以及使用范围

    在Spring框架中,`HibernateTemplate`作为ORM(Object Relational Mapping)技术中的一个重要组件,它提供了简化Hibernate操作的方法集,使得开发人员能够更加便捷地进行数据库操作。通过使用`HibernateTemplate`,...

    Spring中使用Hibernate

    以上就是在Spring中使用Hibernate的基本步骤和关键知识点。通过熟练掌握这些内容,你可以构建出高效、稳定且易于维护的数据访问层。在`Hibernate_Spring`这个压缩包文件中,可能包含了相关的示例代码和配置文件,这...

    hibernate模拟hibernatetemplate

    本教程将深入探讨如何模拟HibernateTemplate,这是Spring框架中的一个辅助类,用于简化Hibernate的使用。在Spring 3.x版本之后,HibernateTemplate被HibernateOperations接口和SessionFactory取代,但在之前的版本中...

    Spring+Hibernate实现增删改查的两种方法

    在Java Web开发中,Spring和Hibernate是两个非常重要的框架,它们常常被联合使用来处理数据库操作,如增、删、改、查(CRUD)。本文将深入探讨如何利用Spring与Hibernate整合,通过两种不同的方式来实现这些基本操作...

    HibernateTemplate 的常规用法.doc

    它为简化Hibernate在Spring框架中的使用提供了便利,减少了手动管理Session和事务的复杂性,提升了开发效率。本节将深入探讨HibernateTemplate的常规用法。 HibernateTemplate提供了丰富的API,可以实现对数据库的...

    HibernateTemplate类的使用

    需要注意的是,直接在`doInHibernate`方法中使用`Session`的事务管理方法可能会导致预期之外的结果,因为这些操作可能与`HibernateTemplate`的默认行为相冲突。 #### 六、Hibernate事务机制探究 为了更好地理解上述...

    SSH2增删改查使用HibernateTemplate

    接下来,我们将深入探讨如何在SSH2中使用HibernateTemplate进行这些基本操作。 首先,我们需要配置SSH2框架。在`applicationContext.xml`中,我们需要配置Spring与Hibernate的整合,包括DataSource、SessionFactory...

    HibernateTemplate的用法总结

    下面通过一个具体的示例来展示如何在实际项目中使用HibernateTemplate。 ```java public class PersonDAOHibernate implements PersonDAO { // log4j日志 private static Log log = LogFactory.getLog...

    Spring整合hibernate(2)之基于HibernateTemplate的整合

    在Java企业级开发中,Spring和Hibernate是两个非常重要的框架,Spring作为一个全面的轻量级容器,负责管理对象的生命周期和依赖注入,而Hibernate则是一个强大的持久化框架,专门处理数据库操作。本教程将深入探讨...

    hibernateTemplate

    `HibernateTemplate`还支持命名查询功能,这是一种预先定义好的查询方式,可以在Hibernate配置文件中预先定义好查询语句及其名称,然后在程序中直接调用这些命名查询,提高了代码的可读性和可维护性。 #### 四、...

    Hibernate方法总结

    在Java持久化框架Hibernate中,HibernateTemplate是一个便捷的工具类,它封装了常见的数据库操作,使得开发者能够更方便地与数据库交互。以下是对标题和描述中提到的HibernateTemplate方法的详细总结: A. `get` 和...

    Spring+hibernate整合源代码

    你可以使用编程式事务管理,即在代码中显式调用 begin/commit/rollback 方法,或者使用声明式事务管理,通过 @Transactional 注解来标记事务边界。 3. **数据源配置**:配置数据源是整合的起点。你需要在 Spring ...

Global site tag (gtag.js) - Google Analytics