各位大佬, jpa 和 mybatis 一起用符合设计吗,有哪些隐患

2020-10-27 14:10:58 +08:00
 madworks
前几天用到一个生成器,vue 前端和后端一键生成,代码超级简洁,完全不用改,只是用的 jpa,但是涉及复杂的数据查询 jpa 肯定很繁琐,就想也用上 mybatis,而且发现 mybatisgenerator 稍微修改下 model 生成器源码,就可以满足 jpamybatis 共用 model 类,就是不知道这样有没有什么不好,想请教下各位童靴有没有和 mybatis 一起混用的,有没有什么隐患,注意的地方,
5564 次点击
所在节点    Java
40 条回复
echo1937
2020-10-27 14:14:50 +08:00
我就是这么用的.
lori01
2020-10-27 14:16:59 +08:00
我的博客网站也是这么用的,jpa 真的省掉了很多 sql 编写,复杂的不能用 jpa 的就用 mybaits,很方便,效率非常高
wysnylc
2020-10-27 14:32:41 +08:00
Mybatis 用 tkmapper 可以不需要 MybatisGenerator 生成 xml 和 entity 而使用 Example,减少代码污染
THESDZ
2020-10-27 14:37:03 +08:00
问题不大,注意的地方就是后续维护,表(实体)改动的时候两个地方都要改
guoyuchuan
2020-10-27 14:39:18 +08:00
目前我们公司就是 hibernate 和 mybatis 两者结合使用:
操作数据使用 hibernate ;
查询使用 mybatis

问题:
目前还没遇到问题,估计是我才接触这个项目吧。。。
madworks
2020-10-27 14:40:49 +08:00
@guoyuchuan 为什么查询用 mybatis,操作用 hibernate ?难道不是反过来用的吗
wr516516
2020-10-27 14:46:11 +08:00
@madworks 查询用 mybatis 不是方便 sql 优化吗
guoyuchuan
2020-10-27 14:46:39 +08:00
@madworks #6 这个我也不知道高层的想法。。。我只是个搬砖的。。。
yiyi11
2020-10-27 18:13:50 +08:00
隐患就是没有意识到 mybatisplus 可以替代它们。
madworks
2020-10-27 18:15:38 +08:00
@wysnylc entity 也可以不用写?
madworks
2020-10-27 18:16:21 +08:00
@THESDZ jpa 和 mybatis 共用一个 model 啊,就是比较头疼 id
madworks
2020-10-27 18:16:40 +08:00
@yiyi11 是真的吗
wysnylc
2020-10-27 18:22:32 +08:00
@madworks #10 不需要,tkmapper 对比 MybatisGenerator 对代码的侵入非常低,配置也非常简单
qwerthhusn
2020-10-27 18:33:40 +08:00
其实最大的问题就是事务了,假如一个比较复杂的业务同时用了 JPA 和 MyBatis,Spring 的 @Transactional 能不能包的住。。
然后还有 MyBatis-plus,这玩意挺好用的,增删改查,只要不是复杂的表达式啥的,都不用写 xml,直接代码搞定。但是 MyBatis-plus 这种个人开发出来的东西,自己的小项目用用没问题,公司的项目的话感觉还是别用的好
EminemW
2020-10-27 22:31:55 +08:00
jpa 不也能写 sql 么
raullf
2020-10-27 22:43:02 +08:00
前端后端生成器是啥
zzl22100048
2020-10-27 23:24:51 +08:00
jpa+querydsl 就够了吧,mybatis 太难维护了
taogen
2020-10-27 23:29:41 +08:00
mybatis plus 不香吗
jdi
2020-10-28 00:01:29 +08:00
mybatisplus = mybatis+jpa 。
不过我比较好奇生成器是什么(*´∀`)
Kirsk
2020-10-28 00:43:14 +08:00
其实蛮多地方功能相似 少部分用 mybatis 多表确实有些优势 不过 mapper 一套下来 确实没有 jpa 方便 复杂查询封装下 spec 还是看自身业务场景吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/719020

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX