`
former
  • 浏览: 96516 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

对Hibernate Session做一个简单的包装

阅读更多

在谈包装之前,我们先看一看以下几个论断:

  1. 牛人们都说dao是反模式,认为需要取消dao。
  2. 以前写个dao,需要一个DAO的基类、spring的注入、泛型,甚至要声明一个dao的接口,比较繁琐。 

 大多数情况下,我认为我们需要一个简单的实现,既不要程序员为了处理数据,声明dao的实现,做很多事情,又能比较方便的实现对数据操作的解耦。JPA的EntityManager提供了一个很好的例子,但是如果我们用Hibernate则无法使用。于是参考JPA的EntityManager实现,和SpringSide的SimpleHibernateDao实现,我们对Session做如下的封装,代码参见附件。

通过在Service中注入这个Wrapper,我们就拥有了简单的数据访问能力,而不需要为每个业务声明DAO的接口,并将其注入Service或在Service中实例化。也不用该类提供任何泛型的定义,只要给出实体类的声明即可。看一个Service的列子:

@Autowired 
protected HibernateSessionWrapper wrapper; 
@Transactional(readOnly = true) 
public Customer get(Long id) {
   return wrapper.get(Customer.class, id); 
}
 public Customer logicDelete(Long id) {
 Customer customer = get(id); 
customer.setStatus(Customer.STATUS_INACTIVE); 
wrapper.save(customer);
return customer; 
} 

 

Java的贫血性pojo工作的很好,何乐而不为:)

1
1
分享到:
评论

相关推荐

    hibernate_day02笔记

    Hibernate是一个开源的Java ORM框架,它简化了Java应用与数据库之间的交互。通过Hibernate,开发者可以创建Java对象(实体类),这些对象与数据库中的表进行映射,从而实现对数据库数据的CRUD(创建、读取、更新、...

    hibernate压缩包

    例如,对数据库的多个操作可以包装在一个事务中,如果其中任何一步失败,整个事务将回滚,保持数据的完整性。 在查询方面,Hibernate支持HQL(Hibernate Query Language)和 Criteria API,它们提供了面向对象的...

    Hibernate曾删改查接口实现

    Hibernate是一个开源的ORM框架,它的核心是Session接口,它是与数据库交互的主要接口。Session提供了对持久化对象的生命周期管理,包括保存、更新、删除和查询操作。 **2. 增加(Insert)** 在Hibernate中,增加...

    OSGI中Hibernate扩展在felix中的应用

    描述中提到的"在felix2.0.1扩展Hibernate,使之工作于OSGI框架之中"意味着我们需要对Hibernate进行适当的包装和配置,以便它能与Felix的模块化体系结构兼容。这通常涉及到创建OSGI bundles,每个bundle封装一个或多...

    第24次课-1 Spring与Hibernate的整合

    有效的Session管理:Spring提供了有效、简单、安全的Hibernate Session处理。 IoC容器降低了DAO组件与业务逻辑层之间的耦合性。 DAO模式的使用,降低了系统重构的代价。 方便的事务管理:Spring提供的声明式事务处理...

    Spring_Spring_Hibernate_HibernateTemplate

    HibernateTemplate是Spring为简化Hibernate操作而设计的一个类,它包装了Hibernate的Session对象,提供了事务管理、异常转换等功能。使用HibernateTemplate,开发者无需手动管理Session,避免了可能出现的资源泄露...

    struts2和hibernate整合

    Struts2是Apache软件基金会下的一个项目,它提供了强大的动作调度和视图渲染功能,而Hibernate则是一个对象关系映射(ORM)工具,能够将Java类与数据库表进行映射,简化数据库操作。 **Struts2整合Hibernate的核心...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

    第3章 第一个Hibernate应用  3.1 创建Hibernate的配置文件  3.2 创建持久化类  3.3 创建数据库Schema  3.4 创建对象-关系映射文件  3.4.1 映射文件的文档类型定义(DTD)  3.4.2 把Customer持久化类映射到...

    Spring源代码解析(八):Spring驱动Hibernate的实现.doc

    在Spring框架中,整合Hibernate作为持久层解决方案是一个常见的实践。Spring通过`LocalSessionFactoryBean`类实现了对Hibernate的驱动,使得开发者能够更加灵活和方便地管理数据持久化操作。`...

    spring与hibernate整合

    2. **使用HibernateTemplate**:Spring提供了一个HibernateTemplate类,它是对Hibernate Session的简单包装,提供了事务安全的CRUD操作。通过注入HibernateTemplate,可以在业务逻辑层调用其方法执行数据库操作。 3...

    hibernate3.5与spring2.5.5整合最佳实践

    - 最佳实践中,推荐使用HibernateTemplate或者HibernateDaoSupport,它们是Spring提供的对Hibernate的简单包装,可以避免手动管理Session和事务。 7. **测试与优化** - 使用JUnit进行单元测试,验证整合是否成功...

    hibernate 开发基础

    Hibernate是一个开源的持久层框架,它在对象关系映射(ORM)领域中应用广泛。Hibernate通过简化JDBC编程,提供了一个对象/关系映射工具,允许开发者使用对象的方式操作数据库。以下是关于Hibernate开发基础的详细...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    处于持久化状态的Java对象位于一个Session实例的缓存中,Session能根据这个对象的属性变化来同步更新数据库。 8.1 Java对象在JVM中的 生命周期 179 8.2 理解Session的缓存 181 8.2.1 Session的缓存的作用 182 ...

    hibernate开发文档

    1. **实体类**:定义业务对象,通常对应数据库中的一个表,使用JavaBean规范。 2. **属性映射**:通过注解或XML文件将实体类的属性与数据库表字段对应起来。 3. **主键生成策略**:配置实体类主键的生成方式,如`@...

    Spring控制Hibernate中的事务传播特性与隔离级别操作.docx

    首先,HibernateTemplate是Spring对Hibernate原生Session的一个包装,它提供了一种更安全、方便的方式来执行常见的Hibernate操作。与直接使用Session相比,使用HibernateTemplate有以下优点: 1. **事务管理**:...

    SpringMVC+Hibernate+EXT

    Hibernate是一个强大的Java持久化框架,它简化了数据库操作,提供了对象关系映射(ORM)功能。通过Hibernate,开发人员可以将Java对象与数据库表进行映射,从而避免编写大量的SQL语句。Hibernate支持CRUD(创建、...

    基于Prototype + Spring + Hibernate实现的自动提示功能

    本项目就是基于Prototype、Spring和Hibernate这三个组件实现的一个自动提示功能,这为我们提供了一个理解这些技术如何协同工作的实例。 Prototype是JavaScript的一个库,它为浏览器提供了许多实用的函数,如事件...

    spring hibernate project

    4. 编写 DAO 类:使用 HibernateSession 进行数据操作,如 save()、update()、delete() 和 find() 方法。 5. 测试:编写 JUnit 测试用例,验证 CRUD 操作是否正常工作。 文件名 "springhibernate" 可能是指项目主...

    hibernate入门与概述

    - **关联关系**:关联关系是对象之间的一种联系,比如一个班级可以有多个学生,这种关系在ORM中可以通过一对一、一对多、多对一、多对多等方式实现。 - **依赖关系**:对象之间的短暂交互,如函数调用,不涉及长期...

Global site tag (gtag.js) - Google Analytics