为何不选 Hibernate,非要 MyBatis?

329 天前
 dc2002007

###一直不能理解 Hibernate 这么优秀的 orm 思想框架,为什么这么多项目还选择了在 xml 里写 sql 的 MyBatis ,求解惑?

当然我首先是不能接受在 xml 里写 sql 这种行为的!
orm 不够优秀吗?
15087 次点击
所在节点    Java
130 条回复
weijancc
329 天前
建议你实际项目用过 hibernate 再来说话, 如果用过, 一定会不可避免的出现需要在代码内写 HQL 或者 SQL 的情况, 和 xml 对比起来, 在代码内写这些 QL 实在是恶心
wlm201219
329 天前
ORM 学习成本比较高,
想用好 ORM 需要对面向对象编程有一定的理解,而使用 mybatis 只要会 sql 就好,在这个 35 岁就面临就业问题的社会,前者自然要被淘汰的
再加上初期大厂的带头作用,国内计算机教育的脱节,mybatis 流行也就不奇怪了
wlm201219
329 天前
@weijancc 我反倒觉得在代码里写 jpql 很舒服,因为 idea 的检测比在 xml 的 sql 完善得多
BiChengfei
329 天前
spring data jpa + Mybatis ,复杂查询用 mybatis 写,其他用 jpa ,爽的飞起
mybatis plus 完全没有 jpa 好用,稍微使用以下就能感觉到
听说现在国外 jpa 的使用占比很高,国内过去十年,行业人数快速膨胀,培训班很少有教 ORM ,旧项目很多使用的 Mybatis ,为了保持公司技术栈统一,众多原因,Mybatis 占比一直居高不下
但随着行业沉淀,从业人员水平提升,JPA 占比会慢慢提升,Mybatis 终将推出历史舞台
Nosub
329 天前
不用思考,hibernate 成本太高,一般人掌握不了,你要一个面向过程的程序员去写面向对象的代码,就算用 Java 也可以写出 c 的既视感。
maigebaoer
329 天前
@Nosub 我这是用 php 和 go 写 c 风格代码🫣
githmb
329 天前
我不是不能接受在 xml 里写 sql 这种行为

我根本不想碰 xml 这种脑瘫东西!
zed1018
329 天前
@githmb 哈哈哈哈哈哈,我也是,我是因为搞过 android ,对 xml 深恶痛绝。
xiaowowo
329 天前
因为 hibernate 是一个类似鸡肋的东西,设计比较复杂。功能又不是那么强大。
bthulu
329 天前
mybatis 培训班半天成型, hibernate 至少三天, 是你你选哪个?
dabai0806
329 天前
简单 sql 没必要, 复杂 sql 弄不了
nothingistrue
329 天前
Hibernate 与其说是 Object Relation Mapping ,不如是是 Object Model using Relation Model as Technical Implementation 。Hibernate 必须搭配脱离数据库的对象模型才能用好,如果你还是面向数据库关系数据模型来用,那用起来是非常难用得。

让 Hibernate 被 MyBatis 替代的,正好是让 Hibernate 被大力推广的 SSH 分层架构。这个鸟架构首先是用错了被 EJB 的重量级给搞应激了,完全取消有会话 Bean 从而导致了数据跟程序的分离,进而导致 Java Web 开发从面向对象开发,变成了虽然用着面向对象语言,但搞得还是面向函数,甚至直接面向 SQL 的开发。SSH 实际上用错了 Hibernate ,Hibernate 压根就不适合这种面向函数的开发模式,自然就被替换掉了,当时就算没有 ibatis 也会有其他的替代。至于 MyBatis ,只不过是 ibatis 的封装衍生而已。

@potatowish #8 MyBatisPlus 并不是 MyBatis 的衍生,它是模仿的 Spring Data Jpa ,只不过前者用 MyBatis 当技术实现,后者用 Jpa ( Hibernate ) 当技术实现。
Kaiv2
329 天前
能列一下 Hibernate 对比 MyBatis 优秀的地方吗?
我使用 MyBatis 感觉是简单轻量高性能。
Hibernate 笨重性能相对较低,复杂查询还是得用 SQL
yty2012g
329 天前
Spring Data JPA ( Hibernate )、MyBatis ( iBatis )都写过,最近在玩 JOOQ ,觉得写起来好爽啊
wswlaz
329 天前
个人项目我选 springdata jpa , 公司项目用 mybatis
ramoudev
329 天前
mybatis 还是挺重的,mybatisplus 仅仅是一个反射升级版,jpa 是思想
murmur
329 天前
@githmb xml 有原语,可以直接校验格式,企业开发这玩意简直是神器
murmur
329 天前
而且 xml 可以换行,你 json 支持换行么,yml 支持换行么,大段数据不让换行会死人的
THESDZ
329 天前
短平快,更适合国内弯道超车的思想理念.
limaofeng
329 天前
用 hibernate 必须要 hql 吗? 我就觉得 jpa 比 mybatis 方便。普通查询之类更本用不上 sql , 统计要写 sql 的时候也没 hql 啥事。如果还把 hibernate = 代码里面写 hql ,就是不了解 hibernate

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

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

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

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

© 2021 V2EX