`
jimmy.shine
  • 浏览: 390559 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JPA/Hibernate与Spring集成的事务分析

阅读更多

在hibernate或者是JPA中,对于所有的操作,都必须要在事务中提交,即在Hibernate的代码中,我们必须用以下的方式编程(注意,这里说是的Hibernate,不是Spring下的HibernateTemplate)
Hibernate中:

    Session session = sessionFactory.openSession();
    Transaction tx = session.beginTransaction();
    //HQL
    tx.commit();
    session.close();
 


JPA中:

    EntityManagerFactory emf = Persistence.createEntityManagerFactory(“helloWorld”);
    EntityManger em = emf.createEntityManager();
    EntityTransaction tx = em.getTransaction();
    tx.begin();
    //EJB QL
    tx.commit();
    em.close();
 


    而我们在Dao的设计中,我们希望直接的写要操作的语句,其中一种方法就是使用Spring封装的Template(HibernateTemplate,JPATemplate),Spring封装的Template会在你的方法运行的时候自动开启事务。但是在JPA的编程下,我们没有必要使用JPATemplate,因为JPA已经很精简化了,而且我们也不希望Spring侵入我们的代码。那么我们需要开启事务,在EJB中,我们不需要考虑,因为EJB容器一般都带有事务支持。
    在基于J2SE的程序的设计中,我们可以通过AOP的方式来启动事务的支持。如果是在Spring中,则我们只需要配置如下的,就可以像在EJB的程序中一样,开启事务的支持了。

    <context:annotation-config />
    <aop:aspectj-autoproxy />
    <!-- Annotation事务 -->
    <tx:annotation-driven transaction-manager="transactionManager" />
    <!-- 事务支持 -->
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="emf" />
    </bean>
    <!-- JPA EntityFactory,将使用自动侦测的方式 -->
    <bean id="emf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="persistenceUnitName" value="vaalhaaiFramework" />
    </bean>
 


    而在程序中,我们通过像EJB中启用事务一样,通过加上Spring的事务的org.springframework.transaction.annotation.Transactional
就可以声明事务。当然,也可以通过在Spring中通过配置AspectJ来进行拦截。

分享到:
评论
3 楼 jimmy.shine 2013-05-14  
jinliyixi 写道
不好意思,按照你的说法配,事务没效果


你的配置是什么样的?你确认你使用了aspectj?导入了包没有?
2 楼 jinliyixi 2013-04-28  
不好意思,按照你的说法配,事务没效果
1 楼 jimmy.shine 2009-01-11  
以后不再在论坛上发贴了,关注我的博客的人,请直接到博客上面看。

相关推荐

    spring2.5学习PPT 传智博客

    26.Spring集成的Hibernate编码与测试 27.Struts与Spring集成方案1(Struts集成Spring) 28.Struts与Spring集成方案2(Spring集成Struts) 29.为Spring集成的Hibernate配置二级缓存 30.Spring提供的...

    spring3.1+hibernate4+Jpa Dao

    spring3.1+hibernate4+jpa框架集成Dao部分,并且已经写好测试类,dao已经封装完毕,已经配置好事务。dao采用泛型。

    跟我学spring3(8-13).pdf

    对ORM的支持 之 8.1 概述 8.2 集成Hibernate3 8.3 集成iBATIS 8.4 集成JPA 9.1 数据库事务概述 9.2 事务管理器 9.3 编程式事务 9.4 声明式事务 10.1 概述 10.2 集成Struts1.x 10.3 集成Struts2.x 10.4 集成JSF 11.1 ...

    springboot热部署以及集成JPA.rar

    讲述了springboot的热部署以及集成dao层的框架。(Hibernate、SpringDataJPA等)

    跟我学spring3(8-13)

    【第八章】 对ORM的支持 之 8.2 集成Hibernate3 ——跟我学spring3 【第八章】 对ORM的支持 之 8.3 集成iBATIS ——跟我学spring3 【第八章】 对ORM的支持 之 8.4 集成JPA ——跟我学spring3 【第九章】 Spring的...

    spring-best-practices:Spring异步最佳实践(未维护)

    功能完善,经过测试的功能完备的Spring 3.2参考应用程序,具有JPA持久性,REST Level-3资源,异步处理,作业,安全性,单元,模拟,集成,功能,其余客户端存根,性能测试以及许多最佳实践,聚集了在MVC / Spring / ...

    带事务回滚测试的SSH整合小案例(Spring 3.2+Hibernate 3.3+Struts 2.3)

    集成了Spring 3.2.2 Hibernate 3.3.2 Struts 2.3.4 用JPA的注解实现orm 不用创建数据库表 只需本机上有oracle即可 用JSR注解进行Spring的依赖注入 用Spring Test整合Junit4 进行测试并自动事务回滚 不对数据库造成...

    spring4.3.9相关jar包

    spring-core.jar(必须):这个jar 文件包含Spring 框架...spring-tx.jar:为JDBC、Hibernate、JDO、JPA等提供的一致的声明式和编程式事务管理。 spring-webmvc-portlet.jar:Spring MVC的增强 spring-websocket.jar:

    spring 3.0 jar 所有开发包及开发项目实例

    org.springframework.transaction-3.0.0.M4.jar: 为JDBC、Hibernate、JDO、JPA等提供的一致的声明式和编程式事务管理 org.springframework.web.servlet-3.0.0.M4.jar: SpringMVC org.springframework.jms-3.0.0.M4...

    spring-framework-3.0.0.M4-with-docs

    org.springframework.transaction-3.0.0.M4.jar: 为JDBC、Hibernate、JDO、JPA等提供的一致的声明式和编程式事务管理 org.springframework.web.servlet-3.0.0.M4.jar: SpringMVC org.springframework.jms-3.0.0.M4...

    精通Spring(清晰书签版

    第3篇介绍DAO层集成技术,主要围绕JDBC、Hibernate和JPA等持久化技术展开论述,针对Spring使能应用的事务管理和集成测试,也进行了相关介绍;第4篇介绍Java EE服务及技术的集成,主要围绕企业应用中使用的各种Java ...

    Spring 2.5 jar 所有开发包及完整文档及项目开发实例

    Spring 2.0的'spring-jdo.jar', 'spring-jpa.jar', 'spring-hibernate3.jar', 'spring-toplink.jar' 和 'spring-ibatis.jar' 被合并到Spring 2.5大粒度的'spring-orm.jar'中。 Spring 2.5的 'spring-test.jar' 取代...

    Spring in Action(第2版)中文版

    5.4在spring里集成hibernate 5.4.1选择hibernate的版本 5.4.2使用hibernate模板 5.4.3建立基于hibernate的dao 5.4.4使用hibernate3上下文会话 5.5spring和java持久api 5.5.1使用jpa模板 5.5.2创建一个实体...

    Spring in Action(第二版 中文高清版).part2

    15.4 集成Spring Web Flow与其他框架 15.4.1 Jakarts Struts 15.4.2 JavaServer Face 15.5 小结 第16章 集成其他Web框架 16.1 协同使用Spring和Struts 16.1.1 向Struts注册Spring插件 16.1.2 编写知晓Spring...

    Spring in Action(第二版 中文高清版).part1

    15.4 集成Spring Web Flow与其他框架 15.4.1 Jakarts Struts 15.4.2 JavaServer Face 15.5 小结 第16章 集成其他Web框架 16.1 协同使用Spring和Struts 16.1.1 向Struts注册Spring插件 16.1.2 编写知晓Spring...

    JAVA中spring介绍以及个人使用心得

    数据访问:Spring框架提供了对各种数据访问技术的集成支持,包括JDBC、ORM框架(如Hibernate、MyBatis)、JPA等。 事务管理:Spring框架提供了强大的事务管理支持,可以通过编程式事务管理或声明式事务管理来管理...

    Spring-Reference_zh_CN(Spring中文参考手册)

    9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.6.1. @Transactional 有关的设置 ...

    Spring 2.0 开发参考手册

    9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. &lt;tx:advice/&gt; 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. ...

    Spring入门

    简单的ppt和例子。1、轻松实现软件各层之间的解耦:利用依赖注入技术,降低组件之间的耦合度。...6、 Spring对于主流的应用框架提供了集成支持,如:集成Hibernate、JPA、Struts2等,更便于应用的开发。

Global site tag (gtag.js) - Google Analytics