JPA的創建和增,刪,改

 第一步:

創建 persistence.xml, 在這個文件中配置持久化單元

需要指定跟哪個數據庫進行交互;

需要指定 JPA 使用哪個持久化的框架以及配置該框架的基本屬性

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">

    <persistence-unit name="NewPersistenceUnit">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <properties>
            <property name="hibernate.connection.url" value="jdbc:mysql:///jpa"/>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
            <property name="hibernate.connection.username" value="root"/>
            <property name="hibernate.connection.password" value="root"/>
            <property name="hibernate.archive.autodetection" value="class"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hbm2ddl.auto" value="update"/>
        </properties>
    </persistence-unit>
</persistence>

第二步:創建實體類, 使用 annotation 來描述實體類跟數據庫表之間的映射關係.

package org.peter.model;

import javax.persistence.*;

@Entity(name = "t_user")
/*表示該類是一個實體類,name表示實體類生成的表單的名字*/
public class User {
    private long id;
    private String username;
    private String password;
    private String address;

    @Id//表示id的屬性爲主鍵
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    //設置主鍵生成器strategy的意思是策略
    @Column(name = "id")//該屬性給數據庫id別名
    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

第三步:創建一個main類來實現增刪改查

package org.peter;

import org.junit.Test;
import org.peter.model.User;

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

/**
 * Created by Lenovo on 2017/7/27.
 */
public class main {
    public static void main(String[] args) {
        //add();
    }
    @Test
    public void add() {
        //1,創建EntityManagerFactory
        EntityManagerFactory factory =  Persistence.createEntityManagerFactory("NewPersistenceUnit");
        //2,創建ManagerFactory
        EntityManager manager = factory.createEntityManager();
        //3,開啓事物
        EntityTransaction tx = manager.getTransaction();
        tx.begin();
        //4,實現添加
        User user = new User();
        user.setUsername("張一山");
        user.setAddress("深圳");
        user.setPassword("456");
        manager.persist(user);//
        //5,提交事物
        tx.commit();
        //6,關閉資源
        manager.close();
        factory.close();
    }

}

注意:如果在運行的時候爆出version52的話就是jdk版本太低

補充:註解

@Entity(name = "t_user")//表示該類是一個實體類,name屬性表示實體類生成的表的名字

@Temporal註解用來精確控制Date類型的數據對應的數據庫中字段的數據類型
    三種取值:
    1.DATE 日期
    2.TIME 時間
    3.TIMESTAMP 日期+時間

@Id//表示id屬性是一個主鍵
@GeneratedValue(strategy = GenerationType.IDENTITY)//設置主鍵生成策略
@Column(name = "uid")//配置該屬性在數據庫中生成的字段的名稱

@Basic(fetch = FetchType.EAGER)
如果get方法沒有任何註解,則默認就有@Basic註解,該註解表示將一個屬性映射到數據表中的字段上
fetch = FetchType.EAGER表示一個抓取策略,延遲or正常加載

@Transient//@Transient註解表示該屬性不在數據表中生成對應的列


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章