JPA搭建及简单事例实例
JPA 搭建以及简单事例
eclipse mysql Hibernate5.2.17 JPA2.1
一、JPA 概述
1、JPA是 Java Persistence API(Java 持久层 API)的简称,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体类对象持久化到数据库中。作用:使得应用程序以统一的方式访问持久层
2、JPA 与 Hibernate的什么关系:
1)JPA 是 Hibernate 的一个抽象
2)Hibernate 是 JPA 的一个实现
3、JPA 包括三个方面的技术:
1)ORM JavaBean和数据库中的数据表建立映射关系,支持 XML 和 注解 两种形式
2)JPA 的 API
3)查询语言:JPQL,jpql其原型就是hibernate的hql
1、创建一个maven的java工程,引入pom.xml依赖:
hibernate-entitymanager 依赖包:使用Hibernate来进行实体的管理,实现实体的CRUD操作,只需要引入这个依赖包即可,其它需要依赖的包将由maven自动引入,这样我们就不用关系具体需要依赖哪些jar包了。
<dependencies>
<!-- hibernate-entitymanager -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.2.17.Final</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
2、创建JPA的核心配置文件src/main/resources/META-INF/persistence.xml
META-INF/persistence.xml 文件夹自己创建, 并配置三块基本的信息:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<!-- name为项目工程名 -->
<persistence-unit name="jpademo">
<!--1、 jap是一个规范,是一个接口,它没有任何的具体实现,这里需要指定一个jpa具体实现 -->
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<!-- 2、链接数据库的基本信息 -->
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpademo" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="123456" />
<!--3、 jpa的具体实现,hibernate的基本属性 -->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>
3、创建实体类,并用注解链接实体类和数据表的映射关系
提示:此注解可以标注在getter方法或属性前。
@Entity
@Table(name="t_user")
public class User {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY) //自增长
private int id;
@Column(name="user_name")
private String username;
private String password;
...
}
4.使用junit测试:
@Test
public void test() {
//1.创建entityManagerFactory -- 参数为<persistence-unit name="jpademo">的name值
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("jpademo");
//2.创建EntityManager
EntityManager entityManager = entityManagerFactory.createEntityManager();
//3.开启事务处理
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
//4.执行数据的CRUD
User user = new User();
user.setUsername("admin");
user.setPassword("admin123");
entityManager.persist(user);
//5.提交事务
transaction.commit();
//6.关闭entityManager和entityManagerFactory
entityManager.close();
entityManagerFactory.close();
}
到此,JPA 简单实例完成。