持久化单元,持久化对象的集合。

事务类型:本地事务和全局事务。某些应用场合,只能使用全局事务。

有两个数据库,mysql和oracle.转账时扣钱从mysql进行,加钱是在oracle执行,怎样确保两个语句在同一个事务中执行。普通JDBC不能,只能用全局事务。事务的生命周期应该从Connection对象中抽取出来,不应该局限在Connection中。通常由容器(WebLogic,JBoss)提供JTA实现。二次提交协议,执行一条语句预提交到数据库,执行结果保存到某个变量中,再执行另一条语句,如果都成功,再进行第二次提交。

类路径下META-INF/persistence.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<persistence 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/persistencehttp://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
  <persistence-unit name="jpaPU" 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="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/hib?useUnicode=true&amp;characterEncoding=UTF-8"/>
         <property name="hibernate.max_fetch_depth" value="3"/>
         <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
      </properties>
  </persistence-unit>
</persistence>

这里使用的是Hibernate的JPA实现。不同的JPA产品properties属性配置是不同的。

create-drop的意思是sessionFactory加载时创建表,销毁时删除。

自定义封装类产生EntityManager

package com.tazi.domin;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public final class JpaUtils {
private static EntityManagerFactory emf;
static{
emf=Persistence.createEntityManagerFactory("jpaPU"); //靠provider实现,这里的provider是org.hibernate.ejb.HibernatePersistence
System.out.println(emf.getClass().getName());//org.hibernate.ejb.EntityManagerFactoryImpl
}
public static EntityManager getEntityManager(){
EntityManager em=emf.createEntityManager();
System.out.println(em.getClass().getName());//org.hibernate.ejb.EntityManagerImpl
return em;
}
}

例子:实体类Person

package com.tazi.domin;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Person {
    @Id
    @GeneratedValue
    private Integer id;
    private String name;
    private Date birthday;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
   
}

测试:

package com.tazi.domin;

import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;

public class Test1 {
    public static void main(String[] args) {
        Person person=new Person();
        person.setName("tazi");
        EntityManager em=null;
        EntityTransaction tx=null;
        try{
            em=JpaUtils.getEntityManager();
            tx=em.getTransaction();
            em.persist(person);
            tx.begin();
            tx.commit();
        }finally{
            if(em!=null){
                em.close();
            }
        }
    }
}
这里的方法名都是JPA API,但其实实现是由Hibernate实现的。也就是底层其实是sessionFactory和session的操作。

JPA里面

转载于:https://www.cnblogs.com/tazi/archive/2012/01/04/2311576.html

JPA中persistence.xml模板相关推荐

  1. 不在JPA 的 persistence.xml 文件里配置Entity class的解决的方法

     在Spring 集成 Hibernate 的JPA方式中,须要在persistence配置文件里定义每个实体类.这样很地不方便.2种方法能够解决此问题: 这2种方式都能够实现不用在persist ...

  2. JPA的persistence.xml的使用及常见问题

    在J2SE项目中: <?xml version="1.0" encoding="UTF-8" ?> <persistence xmlns=&q ...

  3. Spring 项目中applicationContext.xml模板

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  4. mybatis中mapper.xml模板

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-/ ...

  5. JPA介绍及persistence.xml配置介绍

    JPA 全称是:Java Persistence API 是由EJB 3.0软件专家组开发,其宗旨是为POJO提供持久化标准规范,了解JPA 从 persistence.xml 开始.它的作用是用来配 ...

  6. JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法

    原文地址:http://www.cnblogs.com/taven/p/3351841.html JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法 在Spr ...

  7. JPA persistence.xml 文件初学者指南

    介绍 在本文中,我将解释 JPA persistence.xml配置文件的用途,以及如何使用可用的 XML 标记或属性设置 Java Persistence 应用程序. 虽然 Spring 应用程序可 ...

  8. xstream xml模板_XStream – XStreamely使用Java中的XML数据的简便方法

    xstream xml模板 有时候,我们不得不处理XML数据. 而且大多数时候,这不是我们一生中最快乐的一天. 甚至有一个术语" XML地狱"描述了程序员必须处理许多难以理解的XM ...

  9. 在idea中创建mybatis-config.xml模板(在idea中创建mybatis核心配置文件模板)

    在idea中创建mybatis-config.xml模板(在idea中创建mybatis核心配置文件模板) 1.写配置文件 2.设置 3.查看 1.写配置文件 先创建一个mybatis-config. ...

最新文章

  1. 用sk-learn的pipline的时候,现:TypeError: ‘Pipeline‘ object is not subscriptable
  2. postgresql常用数据类型:数值、日期、字符串类型
  3. 够快云库, 加速企业信息化建设
  4. Nexus 3.31.1 maven 私服 搭建篇 linux
  5. Linux Shell脚本入门教程系列之(六)Shell数组
  6. Video-Touch:手势识别实现多用户远程控制机器人
  7. 轻松学c语言编程.pdf等,轻松学编程 轻松学C语言编程pdf
  8. 记录表类型 oracle,[转]关于oracle的记录类型
  9. dat图片 电脑端微信_微信 PC 版迎来了重磅更新,可以在电脑端使用小程序了 !...
  10. 谷歌pixel手机解BL锁、刷机、破解电信(史上最详细的帖子)
  11. u盘启动盘制作工具多个linux,多系统U盘启动盘制作工具
  12. java毕业设计老师评语_java毕业设计_springboot框架的教师评价评教系统
  13. Markdown编辑器使用-yellowcong
  14. [wireshark] 码率统计
  15. 支付宝查询对账单对账+解压并将数据读取解析入库
  16. 三个条件的if函数c语言,if函数如何设置多个条件
  17. [BZOJ4379][POI2015]Modernizacja autostrady[树的直径+换根dp]
  18. App开发智能车载应用之概述篇
  19. 微信小程序,图像识别源码
  20. Windows下的pixhawk环境搭建

热门文章

  1. (转)同一服务器部署多个tomcat时的端口号修改详情
  2. Android驱动开发第五章
  3. 基于visual Studio2013解决面试题之0209最大堆排序
  4. Android程序label居中
  5. 12月24日,为我们的无线网络默哀……
  6. 开放linux下mysql数据库3306端口
  7. Android开发六年收获阿里offer定级P7,多亏在阿里P8师兄给的攻略、面试技巧以及学习笔记!!!
  8. 算法------数组---------删除重复元素
  9. 【剑指offer-Java版】30最小的K个数
  10. 形象生动的SpringBoot和SpringMVC的区别