博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot中CrudRepository与JpaRepository
阅读量:6859 次
发布时间:2019-06-26

本文共 1579 字,大约阅读时间需要 5 分钟。

先看下两者的接口代码:
@NoRepositoryBeanpublic interface CrudRepository
extends Repository
{
S save(S var1); Iterable save(Iterable var1); T findOne(ID var1); boolean exists(ID var1); Iterable
findAll(); Iterable
findAll(Iterable
var1); long count(); void delete(ID var1); void delete(T var1); void delete(Iterable
var1); void deleteAll();}
@NoRepositoryBeanpublic interface JpaRepository
extends PagingAndSortingRepository
, QueryByExampleExecutor
{ List
findAll(); List
findAll(Sort var1); List
findAll(Iterable
var1);
List save(Iterable var1); void flush(); S saveAndFlush(S var1); void deleteInBatch(Iterable
var1); void deleteAllInBatch(); T getOne(ID var1);
List findAll(Example var1); List findAll(Example var1, Sort var2);}

看一下他们的继承关系

注意下两者的save方法的不同,JpaRepository 中的save方法实现源码:
@Transactional    public  List save(Iterable entities) {        List result = new ArrayList();        if (entities == null) {            return result;        }        for (S entity : entities) {            result.add(save(entity));        }        return result;    }
CrudRepository 中的save方法源代码
@Transactional    public  S save(S entity) {        if (entityInformation.isNew(entity)) {            em.persist(entity);//是新的就插入            return entity;        } else {            return em.merge(entity); //不是新的merge        }    }
由源码可知CrudRepository 中的save方法是相当于merge+save ,它会先判断记录是否存在,如果存在则更新,不存在则插入记录。唉,还是需要多看源码啊

参考:

你可能感兴趣的文章
EasyUI----动态拼接EasyUI控件
查看>>
PHP session 跨子域问题总结 ini_set('session.cookie_domain', ".domain.com")
查看>>
Office WPS如何在页眉页脚添加一条横线
查看>>
珠海鼎芯(D-Chip)IMX6读取CPU的UID的方法【转】
查看>>
站在 Android 开发的角度,聊聊 Airbnb 的 Lottie!!!
查看>>
数组去重Demo引出的思考
查看>>
javascript怎么禁用浏览器后退按钮
查看>>
Mysql字符串截取总结:left()、right()、substring()、substring_index()
查看>>
AtomicLong可以被原子地读取和写入的底层long值的操作
查看>>
Android studio 将 Module 打包成 Jar 包
查看>>
coffee script
查看>>
正则表达式大全
查看>>
SVN switch 用法详解
查看>>
Javascript文件下载顺序问题
查看>>
筛法“四不像”——《C解毒》试读
查看>>
Android应用之个人应用软件开发(3)【SQLite数据库及理财功能实现】
查看>>
Android应用之个人应用软件开发【全套程序展示及APK下载】
查看>>
你值得安装的 7 个很酷的 CyanogenMod 7 主题
查看>>
php前端控制器
查看>>
程序员第一定律:关于技能与收入
查看>>