Spring Data JPA 與 Mybatis

@[Spring Data JPA 與 Mybatis]

Spring Data JPA 與 Mybatis

Spring Data JPA是Spring Data的子模塊,Spring Data JPA的目標是大大簡化數據訪問層代碼的編碼。作爲使用者,我們只需要編寫自己的repository接口,接口中包含一些個性化的查詢方法,Spring Data JPA將自動實現查詢方法。
如下:先在項目中配置好數據源,之後只需要建立一個倉庫繼承JpaRepository,並且建立和實體類對應的聯繫即可用接口中的方法或者根據規範自定義一些查詢方法。在這裏插入圖片描述
實體類如下:

package com.iep.schedule.model.entity;

import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;

@Data
@NoArgsConstructor
@Entity
@Table(name = "schedule")
public class Schedule {

    @GeneratedValue(strategy = GenerationType.AUTO)
    @Id
    @Column(name = "id")
    private Integer id;

    @Column(name = "student_id")
    private String studentId;

    @Column(name = "year")
    private String year;

    @Column(name = "semester")
    private Integer semester;

    @Column(name = "courses")
    private String courses;

}

接口中按自己的需要定義相應的方法即可
在這裏插入圖片描述
在這裏插入圖片描述
在對應的實現類中調用接口中的方法即可,那麼缺點也是顯而易見的,雖然省去了絕大部分sql編寫,取而代之的是用面向對象的方式操作關係型數據庫的數據,但是對於一些高級和複雜的查詢,就不能夠輕鬆實現了,但是對於一般的增刪查改都是easy,同時也支持事物管理,如:
在這裏插入圖片描述
但是實際上往深層次將,它的底層實現還是hibernate,若要把JPA同mybatis對比,實際上不如說是hibernate與mybatis的對比

MyBatis 是一款優秀的持久層框架,它支持定製化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。MyBatis 可以使用簡單的 XML 或註解來配置和映射原生信息,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄

從基本概念和框架目標上看,兩個框架差別還是很大的。hibernate是一個自動化更強、更高級的框架,畢竟在java代碼層面上,省去了絕大部分sql編寫,取而代之的是用面向對象的方式操作關係型數據庫的數據。而MyBatis則是一個能夠靈活編寫sql語句,並將sql的入參和查詢結果映射成POJOs的一個持久層框架。所以,從表面上看,hibernate能方便、自動化更強,而MyBatis 在Sql語句編寫方面則更靈活自由。
但這只是從使用層面上看兩者的區別,並未涉及的本質。但如果看問題,值看淺層次、表象問題的話,就不能理解技術本質,也不能發揮技術的最多效用。所以,如果更上一個抽象層次去看,對於數據的操作,hibernate是面向對象的,而MyBatis是面向關係的。當然,用hibernate也可以寫出面向關係代碼和系統,但卻得不到面向關係的各種好處,最大的便是編寫sql的靈活性,同時也失去面向對象意義和好處——一句話,不倫不類。那麼,面向對象和關係型模型有什麼不同,體現在哪裏呢?實際上兩者要面對的領域和要解決的問題是根本不同的:面向對象致力於解決計算機邏輯問題,而關係模型致力於解決數據的高效存取問題。

參考原文鏈接:https://www.jianshu.com/p/3927c2b6acc0

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