1. 程式人生 > >JPA2.0規範入門

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 {
//@[email protected]指明本實體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的第一步,邁的還算順利。感謝鵬哥的指導和耐心講解。走出畢業傷感季,男人就該有個男人樣,工作、立業、成家。加油。