第一步:
創建 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註解表示該屬性不在數據表中生成對應的列