JPA学习---第三节:搭建JPA开发环境和全局事务介绍
2014-11-05 22:49
281 查看
一、创建 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&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
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&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
相关文章推荐
- JPA基础(三):搭建JPA开发环境和全局事务介绍
- JPA基础(三):搭建JPA开发环境和全局事务介绍
- APM飞控学习之路:3 APM系统介绍与开发环境搭建
- JAVA学习(一):Java介绍及其平台、开发环境的配置与搭建
- JAVA学习(一):Java介绍及其平台、开发环境的配置与搭建
- android开发学习---linux下开发环境的搭建&& android基础知识介绍
- JAVA学习(一):Java介绍及其平台、开发环境的配置与搭建
- Blockchain学习1_区块链-以太坊开发环境搭建介绍
- JPA学习---第二节:JPA开发环境和思想介绍
- groovy学习1-搭建groovy开发环境
- ThinkPHP学习(一)开发环境搭建
- 开始学习Java,搭建Java开发环境
- 黑莓开发学习(入门教程)02-开发环境搭建
- 一起学习MVC(1)-搭建开发环境
- 《华清远见学习手记》之 ubuntu8.10 下搭建QT4.4.0开发环境
- 学习Android第一步:安装搭建Android开发环境
- iPad开发学习之一环境搭建和基本概念
- GTK+学习:概述 、搭建环境(Windows,Linux)、开发
- GTK+学习:概述 、搭建环境(Windows,Linux)、开发
- SharePoint(WSS)学习(1) 简介与开发环境搭建