第一步:
创建 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注解表示该属性不在数据表中生成对应的列