JPA基础(三):搭建JPA开发环境和全局事务介绍

转载 2016年08月29日 13:38:39

persistence.xml这个配置文件的模板可以从哪里找到呢?因为JPA是一规范,所以你即可以从JPA的规范文档里找到,也可以从任何一个实现了JPA规范的实现产品中找到。好比Hibernate,可以从hibernate-entitymanager-3.4.0.GA\doc\reference\en\html_single\index.html中找到。

<?xml version="1.0"?>
 <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
    <persistence-unit name="sample" transaction-type="RESOURCE_LOCAL">
      <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
        <property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver"/>
        <property name="hibernate.connection.username" value="root"/>
        <property name="hibernate.connection.password" value="123456"/>
        <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/hibernate"/>
       <property name="hibernate.show_sql" value="true"/>
       <property name="hibernate.hbm2ddl.auto" value="update"/>
     </properties>
   </persistence-unit>
 </persistence>

<persistence-unit><persistence-unit/>持久化单元,简单说,就是代表一堆实体bean的集合,那么这堆实体bean,我们叫他们做实体bean单元。我们在学Hibernate就已经知道,他们就是专门用于跟数据库映射的普通Java对象,在我们JPA里面,这些对象叫做实体bean。持久化单元就是一堆实体bean的集合,我们为这堆集合取个名称,<persistence-unit name="……"><persistence-unit/>


全局事物 本地事物
全局事物:资源管理器管理和协调的事物,可以跨越多个数据库和进程。资源管理器一般使用二次提交协议与数据库进行交互。

本地事物:在单个数据库里进行的事物。本地数据源不涉及多个数据来源。

<persistence-unit>中使用transaction-type="RESOURCE_LOCAL / JTA”来控制本地和全局事物的开启


二次提交协议简单说就这样:如果你先执行第一条语句,执行的结果先预提交到数据库,预提交到数据库了,数据库会执行这条语句,然后返回一个执行的结果,这个结果假如我们用布尔值表示的话,成功就是true,失败就是false.然后把执行的结果放入一个(假设是List)对象里面去,接下来再执行第二条语句,执行完第二条语句之后(也是预处理,数据库不会真正实现数据的提交,只是说这条语句送到数据库里面,它模拟下执行,给你返回个执行的结果),假如这两条语句的执行结果在List里面都是true的话,那么这个事务就认为语句是成功的,这时候全局事务就会提交。 二次提交协议,数据库在第一次提交这个语句时,只会做预处理,不会发生真正的数据改变,当我们在全局事务提交的时候,这时候发生了第二次提交,那么第二次提交的时候才会真正的发生数据的改动。如果说在执行这两条语句中,有一个出错了,那么List集合里就有个元素为false,那么全局事务就认为你这个事务是失败的,它就会进行回滚,回滚的时候,哪怕你的第二条语句在第一次提交的时候是成功的,它在第二次提交的时候也会回滚,那么第一次的更改也会恢复到之前的状态,这就是二次提交协议。(可以查看一下数据库方面的文档来了解二次提交协议)


回到persistence.xml的配置里面去,事务类型有两种,什么时候该用全局事务(JTA)?什么时候改用本地事务(RESOURCE_LOCAL)?应有你的业务应用需求来定,我们的大部分应用只是需要本地事务。全局事务通常是在应用服务器里使用,比如weblogic,JBoss等。

JPA的事务配置

事务管理是JPA中另一项重要的内容,了解了JPA中的事务管理,能够进一步掌握JPA的使用。 事务管理是对一系列操作的管理,它最终只有两个结果,要么成功,要么失败。一旦失败,所有的操作将回滚到初始状态...
  • zhangqun23
  • zhangqun23
  • 2016年06月08日 15:26
  • 1336

JPA基础(三):搭建JPA开发环境和全局事务介绍

persistence.xml这个配置文件的模板可以从哪里找到呢?因为JPA是一规范,所以你即可以从JPA的规范文档里找到,也可以从任何一个实现了JPA规范的实现产品中找到。好比Hibernate,可...
  • Max_lxg
  • Max_lxg
  • 2016年08月29日 13:38
  • 288

SPRING-DATA-JPA 全局DAO配置

配置文件:spring-jpa.xml
  • z69183787
  • z69183787
  • 2015年01月08日 19:20
  • 10603

jpa入门之环境搭建和CRUD基本操作

还在为hibernate映射文件太多不好维护发愁吗?如果也不想写映射文件,那么试试JPA吧,一定会减轻很多开发负担的。不可错过的好文章哦。...
  • chenwill3
  • chenwill3
  • 2014年09月06日 20:50
  • 2410

springboot+jpa 基础框架搭建

创建一个spring boot 项目 目录结构添加maven 依赖 -1.创建一个spring boot 项目. 2.添加maven 依赖 1.创建一个spring boot 项目. 2.添加m...
  • qq_29371103
  • qq_29371103
  • 2017年04月07日 17:14
  • 620

[JavaEE - JPA] 3. Spring Framework中的事务管理

前文讨论了事务划分(Transaction Demarcation)在EJB中是如何实现的,本文继续介绍在Spring Framework中是如何完成事务划分的。 我们已经知道了当采用Contain...
  • dm_vincent
  • dm_vincent
  • 2016年09月23日 23:05
  • 5280

全局和本地事务(从理论上)

全局和本地事务 ·   全局事务 - 资源管理器管理和协调的事务,可以跨越多个数据库和进程。资源管理器一般使用 XA二阶段提交协议与“企业信息系统”(EIS) 或数据库进行交互。 ·   本地事务 -...
  • toto1297488504
  • toto1297488504
  • 2013年09月22日 23:53
  • 1269

JPA入门之环境的搭建

JPA全称Java Persistence API,是java中描述对象与数据库中关系表的一个标准,它的出现让我们能更好的以面向对象编程的方式来解决各种业务。它让我们摆脱了麻烦的jdbc和sql代码。...
  • yizeshun
  • yizeshun
  • 2015年11月10日 18:37
  • 1210

Spring+SpringMVC+SpingDataJPA(基于Hibernate)框架搭建

本文会教大家讲解如何搭建Spring+Spring Data JPA+SpingMVC项目环境
  • HongTao_Scau
  • HongTao_Scau
  • 2017年09月05日 10:47
  • 501

SPRING-DATA-JPA 全局DAO配置

 配置文件:spring-jpa.xml [html] view plain copy xml version="1.0" encoding="UTF...
  • dream8062
  • dream8062
  • 2017年04月07日 11:21
  • 219
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JPA基础(三):搭建JPA开发环境和全局事务介绍
举报原因:
原因补充:

(最多只允许输入30个字)