JPA学习---第三节:搭建JPA开发环境和全局事务介绍

一、创建 Java 项目

1、导入所需的 jar 包:

2、创建 persistence.xml 文件, 代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
    xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="learn_jpa" transaction-type="RESOURCE_LOCAL">
       <provider>org.hibernate.ejb.HibernatePersistence</provider>
         
         <properties>
        <!-- 数据库方言 -->
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
        <!-- 数据库驱动 -->
        <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
        <!-- 数据库用户名 -->
        <property name="hibernate.connection.username" value="root" />
        <!-- 数据库密码 -->
        <property name="hibernate.connection.password" value="hwl901121" />
        <!-- 数据库连接URL -->
        <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/learn_jpa?useUnicode=true&amp;characterEncoding=UTF8"/>
        <!-- 最大抓取深度 -->
        <property name="hibernate.max_fetch_depth" value="3" />
        <!-- 更新方式创建库表 -->
        <property name="hibernate.hbm2ddl.auto" value="update" />
        <!-- 显示SQL -->
        <property name="hibernate.show_sql" value="false" />
        <!-- 格式SQL -->
        <property name="hibernate.format_sql" value="true" />
     </properties>
  </persistence-unit>
</persistence>

详解:

persistence-unit:持久化单元,简单说,就是代表一堆实体bean的集合,那么这堆实体bean,我们叫他们做实体bean单元。我们在学Hibernate就已知道,他们就是专门用于跟数据库映射的普
通的Java对象,在我们JPA里面,这些对象叫做实体bean。持久化单元就是一堆实体bean的集合,我们为这堆集合取个名称,<persistence-unit name="..."><persistence-unit/>,可以有好几个这样的持久化单元,也就是它们会和不同的数据库打交道。

name属性用于定义持久化单元的名字 (name必选,空值也合法); transaction-type 指定事务类型(可选 RESOURCE_LOCAL 或 JTA)

hibernate.hbm2ddl.auto:

参数的作用主要用于:自动创建|更新|验证数据库表结构

hibernate.hbm2ddl.auto 值:

create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
create-drop:每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。
validate:每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

二、RESOURCE_LOCAL 管理事务和 JTA管理事务的区别:

1、JTA事务(Java Transaction API)是J2EE规范中有关事务的标准。它是容器级别的事务,只能运行在J2EE服务器中。它的最大优势是可以支持分布式的事务,如果系统采用的是分布式的数据库,那么只能选择JTA管理EntityManager事务。

使用JTA管理EntityManager事务时,需要注意以下几个问题。

— JTA事务只能运行在J2EE的环境中,即EJB容器中和Web容器中;而在J2SE环境中只能使用RESOURCE_LOCAL管理事务。

— 容器托管的EntityManager对象只能采用JTA的事务,而不能采用RESOURCE_LOCAL事务。

2、RESOURCE_LOCAL事务数据库本地的事务。它是数据库级别的事务,只能针对一种数据库,不支持分布式的事务。对于中小型的应用,可以采用RESOURCE_LOCAL管理EntityManager事务。

使用RESOURCE_LOCAL管理EntityManager事务时需要注意以下几个问题。

— 在J2SE环境中,只能使用RESOURCE_LOCAL管理EntityManager事务,并且EntityManager对象是以应用托管方式获得的。

— 代码中使用RESOURCE_LOCAL管理事务时,要通过调用EntityManager的getTransac- tion()方法获得本地事务对象。

http://brushupo.blog.sohu.com/95340446.html

时间: 2024-10-07 05:28:04

JPA学习---第三节:搭建JPA开发环境和全局事务介绍的相关文章

JavaSE入门学习4:搭建Java开发环境(二)

在上一篇的博文JavaSE入门学习3:搭建Java开发环境(一)中说到我们配置了Path变量的一种方式,再来说说第 二种配置方式,这种配置方式是必须掌握的. path环境变量配置方式2 我们为什么要将第二种配置形式呢?那第一种的配置方式有什么缺点吗?假设我的计算机上安装了两个JDK,一 个是1.7,一个1.8,我刚才配置的是1.8的,那么我需要配置1.7,需要重新配置Path环境变量,有可能在修改Path环 境变量的同时误删其它的东西,所以不建议使用第一种. path环境变量的参照形配置方式的步

JavaSE入门学习3:搭建Java开发环境(一)

在上一篇的博文中,所编辑的Java源文件和编译的字节码文件是保存在E:\Java\develop\jdk1.8.0_25\bin目录下, 如果编辑的Java源文件和字节码文件没有用了或者想要删掉,我们很容易删除bin目录下的其它运行程序文件.还有 如果想要创建很多个Java源文件或者我们开发Java程序,那么bin目录中会存在很多的Java源文件和字节码文件,因 此我们不会将源文件写在bin目录中,需要我们在另外的文件夹下编辑源文件. 我们将编辑好的Java源文件保存在E:\Java\JavaS

Linux学习之在搭建java开发环境

首先,在官网上下载你需要的JDK 然后 解压包  tar -zxvf 包名 配置环境变量 vim /etc/profile 如果权限不够,就使用sudo vim /etc/profile 在profile里添加以下变量: 编辑完成后 使用source /etc/profile 使该环境变量生效 这个时候,使用 java -version 命令就可以查看jdk版本了

Struts2 + Spring 学习(一)搭建struts开发环境

·为Web应用增加Struts2支持 1. 登陆struts2官网下载struts2的最新版,本文所用的是Struts 2.3.16.2 我们所下载的压缩包内内容应给如下 其中,apps包含了struts2的实例应用,docs包含了struts2的相关文档,lib包含了Struts2框架的核心类库以及struts2的第三方插件类库,src包含了struc包含了struts2框架的全部源码. 2. 在Eclipse新建Web工程,将是所用到的类库放到WEB-INF/路径下 3. 编辑Web应用的w

【Python】Java程序员学习Python(二)— 开发环境搭建

巧妇难为无米之炊,我最爱的还是鸡蛋羹,因为我和鸡蛋羹有段不能说的秘密. 不管学啥,都要有环境,对于程序员来说搭建个开发环境应该不是什么难题.按顺序一步步来就可以,我也只是记录我的安装过程,你也可以滴. 一.准备Java环境 我已经说过了,其实我是一个Java程序员,所以学习过程中会有很多Java相关的内容和对比.先介绍下我的基本情况 jdk1.8 eclipse即可,版本最新的 怎么安装java,配置环境变量什么的,我都不会再说了,我这不是小白教程,我相信具备一定的能力. 二.准备Python环

Android学习笔记(二):搭建安卓开发环境

① 下载 JDK 5 or JDK 6 (JRE alone is not sufficient) ->安装->设置环境变量JAVA_HOME CLASSPATH path 下载地址:Download JDK ② 下载 Eclipse 3.3 (Europa), 3.4 (Ganymede) IDE for JAVA-> 解压 下载地址:Eclipse for JAVA developer ③ 下载 Android SDK 解压-> path 里加入 SDK 包中的 tools 目

Android学习路线(一)开发环境搭建

工欲善其事,必先利其器. 回想我刚开始学习Android的时候,环境搭建真的是很头疼的一件事:找了好多博客,看了很多文章,费了九牛二虎之力才搭好环境.当时好想有个直接就能用的开发环境,赶紧开始编写Android App. 不过现在好啦,托Google的福,我们可以直接下载一个环境都配置好了的IDE,直接就能编写App了.当然,你得现有Java(jdk/jre)环境:还没有安装jdk的同学可以参考这篇文章:http://jingyan.baidu.com/article/6dad5075d1dc4

Eclipse+ADT+Android SDK 搭建安卓开发环境

要求 必备知识 windows 7 基本操作. 运行环境 windows 7 下载地址 环境下载 最近开接触Android(安卓)嵌入式开发,首要问题是搭建Andoid开发环境,由于本人用的是windows7的笔记本,也就只能到Windows中搭建Android 开发环境了! 就搭建环境都花了比较长的时间, 在各种版本之间折腾了比较久的时间, 装好后SDK包更新又是一个比较大的麻烦(天朝的网络大家懂的--).下面把我的安装过程和经验分享个大家!! 安装JDK 这里可以参考我之前写的一篇关于安装J

Eclipse+ADT+SDK搭建Android开发环境

安装Eclipse Eclipse 是一个开放源代码的.基于Java的可扩展开发平台.就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境.幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK).我们可以通过在Eclipse中添加ADT(Android Development Tools)安卓开发工具,来搭建安卓开发环境. 下载Eclipse 下载地址:http://www.eclipse.org/downloa