JPA, Java持久性API, 顾名思义, 为了体现数据库中数据存储的持久性而存在。 通过与hibernate集成可以开发出增删改查及许多拓展层面的应用。
要生成一个JPA应用程序,首先在与class同级的文件夹下生成一个JPA配置文件, persistence.xml文件
相应配置 如下:
xml version="1.0" encoding="UTF-8"?> <persistence 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_1_0.xsd" version="1.0"> <persistence-unit name="hitqz" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistenceprovider> <properties> <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" /> <property name="hibernate.connection.username" value="xx"/> <property name="hibernate.connection.password" value="xxxx"/> <property name="hibernate.connection.url" value="xxxxxx"/> <property name="hibernate.show_sql" value="true" /> <property name="hibernate.hbm2ddl.auto" value="update" /> properties> persistence-unit> persistence>
第二步 手动写一个entity文件,对实体中的类进行定义,生成getter及setter。
package com.hitqz.entity; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; //@Entity注释指名这是一个实体Bean,
//@Table注释指定了Entity所要映射带数据库表,其中@Table.name()用来指定映射表的表名。及对应数据库中我们将要对其进行操作的数据表。 @Entity @Table(name = "t_user") public class User {
//@Id+@GeneratedValue指明本实体bean中的id生成唯一主键策略。
@Id @GeneratedValue private Long id; private String name; private Integer age; public User() { } public User(String name, Integer age) { this.name = name; this.age = age; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", age=" + age + "]"; } }
第三步 撰写测试单元,在测试单元test中对相应表结构和数据进行简单增删改查操作。
public class SysRightTest { @BeforeClass public static void setUpBeforeClass() throws Exception { } @Test public void runtest(){ //1,创建一个EntityManagerFactory EntityManagerFactory factory= Persistence.createEntityManagerFactory("hitqz"); //2,通过factory创建一个实体管理器 EntityManager em= factory.createEntityManager(); //3,因为有保存动作,所以要开启事务
em.getTransaction().begin(); User s = new User(); s.setName("周周"); s.setAge(22); em.persist(s); //4,保存实体 // em.persist(new SysRight()); //5,提交事务 em.getTransaction().commit(); //6,关闭实体管理器 em.close(); //7,关闭实体管理工厂 factory.close();
}
修改:
em.getTransaction().begin(); User s = em.find(User.class, (long)1); System.out.println(s.getName() + s.getAge()); s.setAge(200); s.setName("刘刘"); System.out.println(s.getName() + s.getAge()); em.merge(s); //4,保存实体 // em.persist(new SysRight()); //5,提交事务 em.getTransaction().commit();
删除:
User s = em.find(User.class, (long)1);
em.remove(s);
将会删除id为1的一条数据库记录。
查即find。
走进JPA2.0的第一步,迈的还算顺利。感谢鹏哥的指导和耐心讲解。走出毕业伤感季,男人就该有个男人样,工作、立业、成家。加油。