JPA介绍及persistence.xml配置介绍

    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>
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值