本章講的是簡單的搭建SpringDataJPA項目,通過操作對象,然後對應的去操作數據庫中的表。
環境搭建過程
1.創建maven工程
2.配置jpa文件
3.創建實體類
4.配置實體類和表,類中屬性和表中字段的的映射關係
5.操作增刪改查
首先搭建一個mave工程
然後在Resource下面創建一個META-INF文件夾下創建一個persistence.xml文件並進行配置
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<!--持久化單元
name:持久化單元名稱
transaction-type:事務的管理方式
JPA:分佈式事務管理
RESOURCE_LOCAL:本地事務管理
-->
<persistence-unit name="jpa1" transaction-type="RESOURCE_LOCAL">
<!-- jpa的實現方式 -->
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<!-- 配置屬性信息 -->
<property name="javax.persistence.jdbc.user" value="root"></property>
<property name="javax.persistence.jdbc.password" value="123456"></property>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"></property>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql:///springdata"></property>
<!-- 是否顯示sql語句 -->
<property name="hibernate.show_sql" value="true"></property>
<!-- 自動創建數據庫表
create 每次都新創建一個表
update 沒表就創建,有表就不創建了
none 不對數據庫表信息進行操作
-->
<property name="hibernate.hbm2ddl.auto" value="update"></property>
</properties>
</persistence-unit>
</persistence>
編寫實體類
package com.w.entity;
import javax.persistence.*;
@Entity
@Table(name="cst_customer")
public class Customer {
//主鍵
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="cust_id")
private Long cId;
//客戶名稱
@Column(name="cust_name")
private String cName;
//客戶來源
@Column(name="cust_source")
private String cSource;
//所屬行業
@Column(name="cust_industry")
private String cIndustry;
//等級
@Column(name="cust_level")
private String cLevel;
//地址
@Column(name="cust_address")
private String cAddr;
//電話
@Column(name="cust_phone")
private String cPhone;
public Long getcId() {
return cId;
}
public void setcId(Long cId) {
this.cId = cId;
}
public String getcName() {
return cName;
}
public void setcName(String cName) {
this.cName = cName;
}
public String getcSource() {
return cSource;
}
public void setcSource(String cSource) {
this.cSource = cSource;
}
public String getcIndustry() {
return cIndustry;
}
public void setcIndustry(String cIndustry) {
this.cIndustry = cIndustry;
}
public String getcLevel() {
return cLevel;
}
public void setcLevel(String cLevel) {
this.cLevel = cLevel;
}
public String getcAddr() {
return cAddr;
}
public void setcAddr(String cAddr) {
this.cAddr = cAddr;
}
public String getcPhone() {
return cPhone;
}
public void setcPhone(String cPhone) {
this.cPhone = cPhone;
}
@Override
public String toString() {
return "Customer{" +
"cId=" + cId +
", cName='" + cName + '\'' +
", cSource='" + cSource + '\'' +
", cIndustry='" + cIndustry + '\'' +
", cLevel='" + cLevel + '\'' +
", cAddr='" + cAddr + '\'' +
", cPhone='" + cPhone + '\'' +
'}';
}
}
創建數據庫表
/*創建客戶表*/
CREATE TABLE cst_customer (
cust_id bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客戶編號(主鍵)',
cust_name varchar(32) NOT NULL COMMENT '客戶名稱(公司名稱)',
cust_source varchar(32) DEFAULT NULL COMMENT '客戶信息來源',
cust_industry varchar(32) DEFAULT NULL COMMENT '客戶所屬行業',
cust_level varchar(32) DEFAULT NULL COMMENT '客戶級別',
cust_address varchar(128) DEFAULT NULL COMMENT '客戶聯繫地址',
cust_phone varchar(64) DEFAULT NULL COMMENT '客戶聯繫電話',
PRIMARY KEY (`cust_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
然後寫一個測試類
@Test
public void testSave(){
//1.加載配置文件創建工廠(實體類工廠)對象
EntityManagerFactory factory = Persistence.createEntityManagerFactory("jpa1");
//2.通過實體類管理工廠獲取實體類管理器
EntityManager entityManager = factory.createEntityManager();
//3.獲取事務對象,開啓事務
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
//4.操作數據,增刪改查
Customer customer = new Customer();
customer.setcName("張三");
entityManager.persist(customer);
//5.提交事務
transaction.commit();
//6.釋放資源
entityManager.close();
factory.close();
}
新增方法是persist
刪除方法是remove
更新操作是merge
查詢是find/getReference
其中find是立即加載,getReference是延遲加載。