关于Mybatis与JPA的优缺点说明
目录
- Mybatis与JPA的优缺点
- JPA java持久层API
- JPA优势
- Mybatis优点
- Mybatis缺点
- JPA与Mybatis的区别
- JPA就是把mapper层的接口换成repository的接口
- JPA的repository
Mybatis与JPA的优缺点
JPA java持久层API
可理解为一种规范,Hibernate就是其具体一个实现。它的实现应用是Spring DataJpa,Spring提供了一套简化开发框架,按照约定好的方法命名规则,编写dao层接口,即可在不编写实现情况下执行数据库操作,还提供了除CRUD以外的功能,比如分页、排序、复杂查询等。SpringDataJpa可以理解为对JPA的再次封装,底层仍旧是Hibernate。
JPA优势
1、JPA可移植性好,支持Hibernate方言。
2、提供单表CRUD方法,减少sql语句的编写,开发效率高,。
3、面向对象开发思想,对象化程度更高。
Mybatis优点
1、自己编写SQL语句,更灵活、性能较高。
2、SQL语句与代码相互分离,易于阅读和维护。
3、提供XML标签#{}、${}、 <if test=""></if>等,支持拼写动态SQL语句。
Mybatis缺点
1、单表的CRUD操作需要编写SQL语句,库表字段的新增修改删除,都要重新维护。
2、XML中有大量SQL需维护;参数变更来回切换修改。
3、Mybatis功能有限。
JPA与Mybatis的区别
其实JPA和mybatis大体上没什么区别,架构上很相似,mybatis就是mapper层,JPA就是repository层,其他都一样的
JPA就是把mapper层的接口换成repository的接口
那么接口具体长什么样呢?
mapper层
自己写sql语句
JPA的repository
没有具体sql语句,看起来没有实现一样,但其实是遵循规则的实现,你只要写 findByXxx(Xxx xx) 就能根据某个键自动实现数据库查询,当然其他的语句也是可以实现的。
如果你觉得不灵活,也可以自己写,例如
最后的nativeQuery一定加上,不然会报错。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
MyBatis还是JPA?终于有答案了
对于一个和数据库打交道的程序员来说,很快会面临着一个艰难的选择.到底是选择MyBatis还是JPA呢? 很多人说,技术选择,都要根据需求来,这个没错.但是,除了需求,还有很重要的一个环节,那就是队友的水平.如果你选择了一些比较高级的技术,那么就是在给整个团队埋坑. JPA的抽象层次更高,代码写起来也更简洁,但是它一点都不简单.虽然经过了多次的培训,我呆过的几个团队,还是把它用的和屎一样. 我扔掉了JPA 我仔细想了一下,有下面几点原因,造成了JPA在很多团队根本就玩不下去. JPA适合业务模型固
-
Mybatis与Jpa的区别和性能对比总结
前言 这几天听朋友说JPA很好用,根本不用写sql.我在想一个程序员不写sql还能叫程序员?而且越高级的工具封装越多的工具,可拓展性和效率就非常的低,况且我本身非常不喜欢过于封装的东西,平时喜欢手写sql,所以一直都是用mybatis去写业务.然后发现jpa的saveAll()批量插入批量更新速度太慢了,导致一些用excel导入的一些东西非常慢,弄得原本同步可以解决的事情每次导入都要开启一个异步,个人感觉这种做法非常不好.因为异步其实就是对当前的业务不影响去另外的时间段去做,例如跑定时任务,异步
-
Spring jpa和mybatis整合遇到的问题解析
前一阵子接手了一个使用SpringBoot 和spring-data-jpa开发的项目,后期新加入一个小伙伴,表示jpa相比mybatis太难用,多表联合的查询写起来也比较费劲,所以便加入了mybatis的支持 开始的时候 @Configuration @EnableJpaRepositories("com.xxx.xxx.repository") class JpaConfig 使用这种方式去配置的jpa,遇到一个问题,就是能select 但是不能save,所以就修改为配置文件的方式
-
关于Mybatis与JPA的优缺点说明
目录 Mybatis与JPA的优缺点 JPA java持久层API JPA优势 Mybatis优点 Mybatis缺点 JPA与Mybatis的区别 JPA就是把mapper层的接口换成repository的接口 JPA的repository Mybatis与JPA的优缺点 JPA java持久层API 可理解为一种规范,Hibernate就是其具体一个实现.它的实现应用是Spring DataJpa,Spring提供了一套简化开发框架,按照约定好的方法命名规则,编写dao层接口,即可在不编写实
-
springboot整合Mybatis、JPA、Redis的示例代码
引言 在springboot 项目中,我们是用ORM 框架来操作数据库变的非常方便.下面我们分别整合mysql ,spring data jpa 以及redis .让我们感受下快车道. 我们首先创建一个springboot 项目,创建好之后,我们来一步步的实践. 使用mybatis 引入依赖: <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-
-
Java Fluent Mybatis实战之构建项目与代码生成篇上
目录 简述 特性 项目搭建 maven依赖引入-fluent-mybatis 表构建 代码生成工具类 解决类找不到问题 总结 简述 偶然看到一篇关于阿里新orm框架的文章,好奇的点了进去.开发后端多年,看到这个还是有点兴奋的.常用mysql的orm框架mybatis.jpa,到后来的优化框架mybatis-plus都是用过,他们或多或少都有优缺点吧.程序员本就是日常革新技术的职业,所以了解更多的框架绝对不会有错误.所以我尝试着把自己学习该框架的过程,记录下来,尽可能去掉一些项目工程中用不到的功能
-
详解SpringBoot是如何整合JPA的
目录 SpringBoot整合JPA JPA & Spring Data JPA Hibernate & JPA Hibernate VS Mybatis 一.导入依赖 二.简单的CRUD 2.1 配置文件 2.2 实体类 2.3 Dao层 2.4 service层 2.5 controller 三.自定义SQL 四.分页查询 五.连表查询 六.分组查询 七.与mybatis对比 SpringBoot整合JPA JPA & Spring Data JPA JPA是Java Pers
-
Springboot使用Spring Data JPA实现数据库操作
SpringBoot整合JPA 使用数据库是开发基本应用的基础,借助于开发框架,我们已经不用编写原始的访问数据库的代码,也不用调用JDBC(Java Data Base Connectivity)或者连接池等诸如此类的被称作底层的代码,我们将从更高的层次上访问数据库,这在Springboot中更是如此,本章我们将详细介绍在Springboot中使用 Spring Data JPA 来实现对数据库的操作. JPA & Spring Data JPA JPA是Java Persistence API
-
轻松搞定SpringBoot JPA使用配置过程详解
SpringBoot整合JPA 使用数据库是开发基本应用的基础,借助于开发框架,我们已经不用编写原始的访问数据库的代码,也不用调用JDBC(Java Data Base Connectivity)或者连接池等诸如此类的被称作底层的代码,我们将从更高的层次上访问数据库,这在Springboot中更是如此,本章我们将详细介绍在Springboot中使用 Spring Data JPA 来实现对数据库的操作. JPA & Spring Data JPA JPA是Java Persistence API
-
mybatis中注解与xml配置的对应关系和对比分析
注解与xml配置的对应关系 mybatis中注解就是简单不需要写配置文件,适合简单的数据处理,理解起来比较容易,不动态生成SQL时候可以用用. 需要绑定,有些时候不如配置文件,配置文件扩展强. 选择合适的方式应用在合适的场景,注解主要应用于sql语句比较简单容易理解的情况下可读性高:生成动态sql时用xml配置文件要更简洁,扩展性强 常用的注解和xml的对应关系 @CacheNamespace 类 <cache> @CacheNamespaceRef 类 <cacheRef> @R
-
一篇文章带你入门Springboot整合微信登录与微信支付(附源码)
0. 前期准备 在使用微信支付前,默认小伙伴已经具备以下技能: 熟练使用springboot(SSM) + Mybatis(plus)/JPA + HttpClient + mysql5.x 了解JWT 权限校验 阅读过微信开放平台微信支付与微信登录相关文档,可以简单看懂时序图 有微信开放平台开发者资质认证账户,具备开通微信支付(如果不具备的小伙伴可以找身边有的人借一下) 1. 微信扫码登录 1.1 微信授权一键登录功能介绍 简介:登录方式优缺点和微信授权一键登录功能介绍 # 1.手机号或者邮箱
随机推荐
- javascript密码验证
- iOS中UIWebView网页加载组件的基础及使用技巧实例
- Python创建模块及模块导入的方法
- PHP多种序列化/反序列化的方法详解
- 让CodeIgniter数据库缓存自动过期的处理的方法
- JavaScript 继承详解及示例代码
- Android下拉刷新SwipeRefreshLayout控件使用方法
- Android下拉刷新PtrFrameLayout的使用实例代码
- centos最小化安装系统后的基本调优及安全设置
- vue插件tab选项卡使用小结
- 获取当前月(季度/年)的最后一天(set相关操作及应用)
- JavaScript中的函数声明和函数表达式区别浅析
- sqlserver 统计sql语句大全收藏
- VBS教程:属性-FreeSpace 属性
- SQL Agent服务无法启动的解决方法
- xmlplus组件设计系列之列表(4)
- C++中引用的使用总结
- javascript中 try catch用法
- 探讨Android 的屏幕滚动操作不如 iPhone 流畅顺滑的原因
- Python爬虫_城市公交、地铁站点和线路数据采集实例