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

发布了8 篇原创文章 · 获赞 18 · 访问量 1830

猜你喜欢

转载自blog.csdn.net/bob_man/article/details/97270130