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>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/36542.html