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>

   JPA搭建及简单事例实例

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搭建及简单事例实例

到此,JPA 简单实例完成。