搭建JPA項目

本章講的是簡單的搭建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是延遲加載。

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