JPA2.0规范入门

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">
    <!-- 定义持久化单元的名称,供实体管理工厂使用 -->
    <!-- namepersistence与实体工厂绑定使用,transaction-type定义了一对一数据库或一对多数据库操作类型 -->
    <persistence-unit name="hitqz" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <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"/>

            <!-- 定义在程序运行时是否在控制台上显示HQL语句,value="true"时显示 -->
            <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的第一步,迈的还算顺利。感谢鹏哥的指导和耐心讲解。走出毕业伤感季,男人就该有个男人样,工作、立业、成家。加油。


猜你喜欢

转载自blog.csdn.net/qq_38977538/article/details/80994675