JPA - HelloWorld 初体验

学习JPA主要从三个方面学习

  1. ORM 映射元数据:JPA支持XML和JDK5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中。 
  2.  核心API:用来操作实体对象,执行CRUD操作,框架在后台完成所有的事情。
  3. 查询语言(JPQL):JPQL使得JPA可以做到面向对象查询。 

项目创建步骤:

  1. 使用eclipse创建JPA工程,eclipse会给我们自动创建persistence.xml,在这个文件中配置持久化单元。该文件的位置按照JPA 规范必须放在META-INF目录下,文件名称也必须是固定的persistence.xml。配置内容:1. 数据库信息配置,指定与哪个数据库进行交互;2. 需要指定JPA的供应商(即JPA使用哪个ORM框架以及该框架的基本属性配置) 
  2. 创建实体类,使用注解来描述实体类跟数据库表之间的映射关系
  3. 使用JPA API 完成数据的增、删、改、查操作。1. 创建 EntityManagerFactory(对应Hibernate中的SessionFactory);2. 创建EntityManager(对应Hibernate中的Session) 

 代码示例

Customer实体类

@Table(name = "JPA_CUSTOMERS")
@Entity
public class Customer {
	private Integer id;
	private String lastName;
	private int age;
	private String email;

	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Id
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	@Column(name = "LAST_NAME")
	public String getLastName() {
		return lastName;
	}
	public void setLastName(String lastName) {
		this.lastName = lastName;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

Main方法类

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;

public class Main {

	public static void main(String[] args) {
		// 1. 创建 EntityManagerFactory
		EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("jpa-1");
		
		// 2. 创建 EntityManager
		EntityManager entityManager = entityManagerFactory.createEntityManager();
		
		// 3. 开启事务
		EntityTransaction entityTransaction = entityManager.getTransaction();
		entityTransaction.begin();
		// 4. 进行持久化操作
		Customer  customer = new Customer();
		customer.setAge(12);
		customer.setLastName("JPA");
		customer.setEmail("[email protected]");
		entityManager.persist(customer);
		// 5. 提交事务
		entityTransaction.commit();
		// 6. 关闭 EntityManager
		entityManager.close();
		entityManagerFactory.close();
	}
}

persistence.xml配置文件及说明

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
	xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
	<!-- 
		name:用于定义持久化单元的名字,必填
		transaction-type:指定 JPA 的事务处理策略,
			RESOURCE_LOCAL:默认值,数据库级别的事务,只针对一种数据库,不支持分布式事务
			JTA:支持分布式事务
	 -->
	<persistence-unit name="jpa-1" transaction-type="RESOURCE_LOCAL">
		<!-- 
			配置使用什么 ORM 产品作为 JPA 实现
			1. 实际上配置的是 javax.persotence.spi.PersistenceProvider 接口实现类
			2. 若 JPA 项目中只有一个 JPA 产品,则也可以不配置该节点
		 -->
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		
		<!-- 配置持久化类 -->
		<class>com.atguigu.jpa.helloworld.Customer</class>
		
		<properties>
			<!-- 数据库配置 -->
			<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
			<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpa" />
			<property name="javax.persistence.jdbc.user" value="root" />
			<property name="javax.persistence.jdbc.password" value="root" />

			<!-- 配置 JPA 实现产品的基本属性,即配置 Hibernate 的基本属性 -->
			<property name="hibernate.hbm2ddl.auto" value="update" />
			<property name="hibernate.format_sql" value="true"/>
			<property name="hibernate.show_sql" value="true"/>
		</properties>
	</persistence-unit>
</persistence>

声明:以上博文内容整理自S硅谷JPA教程,非常感谢!

猜你喜欢

转载自blog.csdn.net/qq_29676623/article/details/84679186