JPA介绍及persistence.xml配置介绍

原创 2016年08月30日 13:55:40
    JPA 全称是:Java Persistence API 是由EJB 3.0软件专家组开发,其宗旨是为POJO提供持久

 化标准规范,了解JPA 从 persistence.xml 开始。它的作用是用来配置实体映射及数据库信息.

它默认情况下需要放在META-INF 文件夹下面

我们先来看一下它的几个重要标签:

persistence-unit

这是持久化单元,在persistence.xml中是允许配置多个持久化单元的。如果配置了多个

持久化单元 那么在 注入实体管理的时候需要指定一下持久化单元的名称。

介绍下该标签的两个属性:

*name* 属性:给这个持久化单元取一个名字。

transaction-type 属性: 这个属性默认值是 JTA (该值标识支持分布式事务)还有一个值是 RESOURCE_LOCAL (该值就很显然标识是本地事务了)

OK 往persistence-unit标签里面走:

provider:标识当前JPA 的供应商(如:org.hibernate.jpa.HibernatePersistenceProvider)

class :列出JPA实体类(即带有@Entity注解的实体)

shared-cache-mode :缓存持久化单元中实体的模式(全部ALL,标识的缓存ENABLE_SELECTIVE,

不缓存NONE,标识不缓存DISABLE_SELECTIVE)

jar-file :如果希望列出整个jar中的实体。可以配置该jar文件

jta-data-source :通过JNDI方式注入 DataSource 信息

properties : 可以在此标签下面配置数据库连接属性和供应商的属性信息。(以下使用Hibernate举例)

<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
<property name="hibernate.max_fetch_depth" value="2"/>
<property name="hibernate.generate_statistics" value="false"/>
<property name="hibernate.format_sql" value="false"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url"value="jdbc:mysql://127.0.0.1:3306/test"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="123"/>
</properties>

有了这个文件后。就可以测试一下啦。(相关的jar需要准备一下,最后会为大家贴上maven的依赖)

快速建一个测试类Demo1 。在main里面开写:

    //这里我 选择 使用一个叫 PU 的持久化单元
     //因为在persistence.xml 的  里面我们配置了 hibernate自动建表。
    //所以到这里,数据库就有表啦
    EntityManagerFactory  factory  =  Persistence.createEntityManagerFactory("PU");

    EntityManager entityManager = factory.createEntityManager();

    //我们来个简单的查询
    //UserProfile 是我建的 用户表

    Query  query = entityManager.createQuery("FROM UserProfile o");
    List profile = query.getResultList();
    System.out.println(profile.size());

    //再来增加
    //下面来来个一连串操作吧, 展示一下 事务
    //那么先开一个事务吧

    entityManager.getTransaction().begin();

    UserProfile user = new UserProfile();

    user.setEmail("123@test.com");
    user.setUsername("test1");

    //set了几个属性,我们来保持他
    entityManager.persist(user);

    //保持好了后 我们来修改一下他的 值
    user.setUsername("test2");

    //可以这样进行修改, 
    //entityManager.merge(user);
    //但我们使用的hibernate,它其他做了一些封装,也就是在一个事务里面只要调用了属性的set方法, 
    //即使不调用merge方法,在最后也会生成update语句
    //在调用persist 的方法后,id字段就会被 自动注入值
    //getReference 方法会生成一个代理对象,在get某个属性的时候才会得到值。

    entityManager.remove(
        entityManager.getReference(UserProfile.class,user.getId()));

    //一个简单的使用就结束拉
    entityManager.getTransaction().commit(); 

那么第一部分就到这里,希望对您了解JPA起到了帮助,下一篇带大家了解JPA的实体注解的使用。

maven依赖:

<dependency>
    <groupid>org.hibernate</groupid>
    <artifactid>hibernate-entitymanager</artifactid>
    <version>5.0.3.Final</version>
</dependency>

<dependency>
    <groupid>org.hibernate</groupid>
    <artifactid>hibernate-validator</artifactid>
    <version>5.2.2.Final</version>
</dependency>
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

JPA的persistence.xml配置文件参数

JPA规范要就在类的META-INF目录下防止persistence.xml,文件名是固定的,配置模版如下, xml代码: xml version="1.0"?> xmlns="http:...

Java Persistence with MyBatis 3(中文版) 第三章 使用XML配置SQL映射器

关系型数据库和SQL是经受时间考验和验证的数据存储机制。和其他的ORM 框架如Hibernate不同,MyBatis鼓励开发者可以直接使用数据库,而不是将其对开发者隐藏,因为这样可以充分发挥数据库服务...

JPA的配置文件persistence.xml参数详解

JPA的配置文件  -----------------------------------------------------------------------------------------...

jpa persistence.xml文件配置详解

<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSch...

JPA的配置文件persistence.xml参数详解

JPA的配置文件persistence.xml参数详解 JPA规范要求在类路径的META-INF目录下放置persistence.xml, 文件的名称是固定的,配置模板如下: Xml代码 ...

JavaEE----JPA中配置文件persistence.xml

1 xml version="1.0" encoding="UTF-8"?> 2 3 persistence version="1.0" 4 xmlns:persistence="...

Spring 3.1 + JPA 2.0 (Hibernate 4) + MySQL 配置 移走persistence.xml。

原文:http://blog.csdn.net/haibinzhang/article/details/7431789    近来闲暇时间摆弄了一下Spring、Hibernate,原因非常简单,做...

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

在Spring 集成 Hibernate 的JPA方式中,需要在persistence配置文件中定义每一个实体类,这样非常地不方便,远哥目前找到了2种方法。   这2种方式都可以实现不用persi...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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