搭建簡單的Spring-Data JPA項目

一、 JPA概述

JPA的全稱是Java Persistence API, 即Java 持久化API,是SUN公司推出的一套基於ORM的規范,內部是由一系列的接口和抽象類構成。

JPA通過JDK 5.0註解描述對象-關系表的映射關系,並將運行期的實體對象持久化到數據庫中。

二、jpa_demo

step1:首先導入需要的依賴

<dependencies>
        <!-- junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <!-- hibernate對jpa的支持包 -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.6.3.Final</version>
        </dependency>

        <!-- c3p0 -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-c3p0</artifactId>
            <version>5.6.1.Final</version>
        </dependency>

        <!-- log日志 -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        
        <!-- Mysql and MariaDB -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
    </dependencies>

step2:編寫實體類和數據庫表的映射配置[重點]

以客戶實體類為例(包含字段:custId,custName,custPhone)
在實體類上使用JPA註解的形式配置映射關系

@Entity
@Table(name="cst_customer")
public class Customer {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    @Column(name="cust_id")
    private Long custId;

    @Column(name="cust_name")
    private String custName;

    @Column(name="cust_phone")
    private String custPhone;
    
    getter/setter...

註解說明:

@Entity:聲明此類為實體類。

@Table(name="數據庫表名"):實體類和表的映射地址。

@Id:聲明當前屬性為主鍵。

@GeneratedValue(strategy=GenerationType.*):配置主鍵的生成策略

  • TABLE:使用一個特定的數據庫表格來保存主鍵
  • SEQUENCE:根據底層數據庫的序列來生成主鍵,條件是數據庫支持序列
  • IDENTITY:主鍵由數據庫自動生成(主要是自動增長型)
  • AUTO:主鍵由程序控制。

@Column

  • 作用:指定實體類屬性和數據庫表之間的對應關系
  • 屬性:
    • name:指定數據庫表的列名稱。
    • unique:是否唯一 
    • nullable:是否可以為空 
    • inserttable:是否可以插入 
    • updateable:是否可以更新 
    • columnDefinition: 定義建表時創建此列的DDL 
    • secondaryTable: 從表名。如果此列不建在主表上(默認建在主表),該屬性定義該列所在從表的名字搭建開發環境[重點]

step3:編寫配置文件屬性

yml文件:

數據庫配置:******

jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

屬性說明:

hibernate.ddl-auto:

  • create:啟動時刪數據庫中的表,然後創建,退出時不刪除數據表。
  • create-drop:啟動時刪數據庫中的表,然後創建,退出時刪除數據表 如果表不存在報錯。
  • update:如果啟動時表格式不一致則更新表,原有數據保留。
  • validate:項目啟動表結構進行校驗 如果不一致則報錯。

show-sql:調用函數時,是否在控制臺打印sql語句。

step3編寫符合Spring Data JPA規范的Dao層接口

Spring Data JPA是spring提供的一款對於數據訪問層(Dao層)的框架,使用Spring Data JPA,隻需要按照框架的規范提供dao接口,不需要實現類就可以完成數據庫的增刪改查、分頁查詢等方法的定義,極大的簡化瞭我們的開發過程。

在Spring Data JPA中,對於定義符合規范的Dao層接口,我們隻需要遵循以下幾點就可以瞭:

創建一個Dao層接口,並實現JpaRepository和JpaSpecificationExecutor

提供相應的泛型

public interface CustomerDao extends JpaRepository<Customer, Long>, JpaSpecificationExecutor<Customer> {
}

說明:

  • JpaRepository:該接口為我們jpa提供瞭基本的簡單的增刪改查方法。
  • JpaSpecificationExecutor:提供數據的復雜操作。

OK!現在我們就能對實體進行的簡單操作啦~

step4:編寫測試用例

public class DataTest {
    @Autowired
    private CustomerDao customerDao;

    /**
     * 保存一個客戶數據
     * 調用save(obj)方法
     */
    @Test
    public void testSave() {
        Customer c = new Customer();
        c.setCustName("掘金");
        customerDao.save(c);
    }

執行測試用例查看數據庫顯示數據添加成功!

到此這篇關於搭建簡單的Spring-Data JPA項目的文章就介紹到這瞭,更多相關Spring-Data JPA搭建項目內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: