一、创建且运行JPA工程
1. 创建JPA 工程
(1)选择创建 JPA Project,注意不是Java Project
(2)JPA version选择 2.0
(3)选择用户库,否则会出现 At least one user library must be selected. 错误
(4)注意persistence.xml文件位置
2. 导包,我直接复制过来的包。
导入Hibernate包、导入JPA包、导入Mysql包
3.编写配置文件persistence.xml 里面要配置数据库连接相关信息和Hibernate相关信息。
(1)编写数据库连接相关信息
1 <!-- 连接数据库的基本信息 --> 2 <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> 3 <property name="javax.persistence.jdbc.url" value="jdbc:mysql://14.12.71.21:3306/jpa?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8"/> 4 <property name="javax.persistence.jdbc.user" value="root"/> 5 <property name="javax.persistence.jdbc.password" value="xxxx"/>
(2)Hibernate相关信息配置
1 <!-- 配置 JPA 实现产品的基本属性. 配置 hibernate 的基本属性 --> 2 <!-- 语句格式化 --> 3 <property name="hibernate.format_sql" value="true"/> 4 <!-- 语句输出 --> 5 <property name="hibernate.show_sql" value="true"/> 6 <!-- 自动处理表结构 --> 7 <property name="hibernate.hbm2ddl.auto" value="update"/> 8 <!-- 9 配置使用什么 ORM 产品来作为 JPA 的实现 10 1. 实际上配置的是 javax.persistence.spi.PersistenceProvider 实现类。 11 2. 若JPA项目这个你只有一个JPA的实现产品,则也可以不配置该节点。 12 --> 13 <provider>org.hibernate.ejb.HibernatePersistence</provider>
4.创建实体类
(1)实体类加注解,@Entity和@Table(name = "表名")两个注解。
1 import javax.persistence.Column; 2 import javax.persistence.Entity; 3 import javax.persistence.GeneratedValue; 4 import javax.persistence.GenerationType; 5 import javax.persistence.Id; 6 import javax.persistence.Table; 7 8 @Entity 9 @Table(name = "jpa_ustomer") 10 public class Customer {
(2)字段加注解
1 // 选择主键自增方式 2 @GeneratedValue(strategy=GenerationType.AUTO) 3 @Id 4 //@Column(name="ID") // 对应列名,如果不写效果一样。 5 public Integer getId() { 6 return id; 7 } 8 public void setId(Integer id) { 9 this.id = id; 10 } 11 // 列名不一样,必须要写上,好对应。 12 @Column(name="LAST_NAME") 13 public String getLasName() { 14 return lasName; 15 } 16 public void setLasName(String lasName) { 17 this.lasName = lasName; 18 } 19 public String getEmail() { 20 return email; 21 } 22 // 一样不需要写@Column 23 public void setEmail(String email) { 24 this.email = email; 25 }
(3)实体类需要配置到配置文件 persistence 中。
1 <!-- 添加持久化类 --> 2 <class>com.jtfr.jpa.helloworld.Customer</class>
5.编写测试类
(1)创建EntityManagerFactory
1 // 1.创建EntityManagerFactory 2 // 来源persistence.xml 里面的name <persistence-unit name="Jpa-1" transaction-type="RESOURCE_LOCAL"> 3 String persistenceUnitName = "Jpa-1"; 4 EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName);
(2)创建EntityManager
1 // 2.创建EntityManager 2 EntityManager entityManager = entityManagerFactory.createEntityManager();
(3)开启事务
1 // 3.开启事务 2 EntityTransaction transaction = entityManager.getTransaction(); 3 transaction.begin();
(4)进行持久化操作(数据存入数据库中)
1 // 4.进行持久化操作 2 Customer customer = new Customer(); 3 customer.setAge(12); 4 customer.setEmail("1123181523@qq.com"); 5 customer.setLasName("Tom"); 6 entityManager.persist(customer);
(5)提交事务
1 // 5.提交事务 2 transaction.commit();
(6)关闭EntityManager
1 // 6.关闭EntityManager 2 entityManager.close();
(7)关闭EntityManagerFactory
1 // 7.关闭EntityManagerFactory 2 entityManagerFactory.close();
6.查看结果
(1)自动创建了表,且插入了数据
(2)表主键是自增的方式
7.总结:JPA就是Hibernate的马甲
8.错误地方
(1) Hibernate 在eclipse里面没有用户库,需要自己配置,百度有。
(2) 创建的时候选择的是2.1 需要换成2.0才是正确的。