既然mybtis更换数据库sql语句要变,为啥还有那么多公司用mybatis?

昵称是可以中文吗 2016-05-08 09:59:13
为何不选择另外一种orm,使得更改数据库时,sql语句可以不用变动?
mybatis当从mysql改变成sqlserver时,sql语句如果变动,mapper都要重写的,好麻烦
...全文
1205 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
微笑着生活 2016-05-24
  • 打赏
  • 举报
回复
我的理解是这样 1:如果数据库不确定的情况下hibernate比较好,换了数据库不需要修改太多语句。 2:如果数据库确定的话,那么mybatis的好处就出来了,SQL结果集嵌套查询还是很方便的。最大的好处如果你对SQL语句理解很深刻的话,你写出来的SQL如果经过高效率的优化过,那么比hibernate方便多了。控制hibernate语句还是比较费劲的
qq_23118143 2016-05-23
  • 打赏
  • 举报
回复
赞一个,学习了
幺客 2016-05-23
  • 打赏
  • 举报
回复
同为ORM hibernate在面对企业级开发向OA时确实有着mybatis所没有的优势,mybatis 看似需要写sql很麻烦,可是这也是他的优势,很多需要sql定制开发时候,hibernate就会变得非常麻烦,而mybatis因为是自己写sql只要没有语法错误,业务逻辑也对就没有问题,但是大型公司一般都会用自己开发的ORM ,而更换数据库...一般公司不会频繁更换的,一来数据需要迁移工作量大,二来更换技术需要付出更多的学习成本。
AsheBin 2016-05-22
  • 打赏
  • 举报
回复
引用 11 楼 SCAUSCNU 的回复:
[quote=引用 9 楼 dick1026 的回复:] mybatis 灵活呀,简单呀。 不同的数据库,只要不是用到内置的函数,普通的数据操作语句也都差不多,基本不用改,比较特殊的那就特殊处理下 mapper都是自动生成的,换了再生成成,覆盖了就行了 大家也都说了,没事谁会老换数据库玩,数据迁移一次也挺不容易的,而且有风险,相比之下,上面说的这点工作量也不算啥。
mapper都是自动生成的 可以自动生成?[/quote] 可以呀,好多工具,你网上搜下就有呀
  • 打赏
  • 举报
回复
引用 9 楼 dick1026 的回复:
mybatis 灵活呀,简单呀。 不同的数据库,只要不是用到内置的函数,普通的数据操作语句也都差不多,基本不用改,比较特殊的那就特殊处理下 mapper都是自动生成的,换了再生成成,覆盖了就行了 大家也都说了,没事谁会老换数据库玩,数据迁移一次也挺不容易的,而且有风险,相比之下,上面说的这点工作量也不算啥。
mapper都是自动生成的 可以自动生成?
菜 头 2016-05-13
  • 打赏
  • 举报
回复
因为他们公司确定数据库不改
AsheBin 2016-05-13
  • 打赏
  • 举报
回复
mybatis 灵活呀,简单呀。 不同的数据库,只要不是用到内置的函数,普通的数据操作语句也都差不多,基本不用改,比较特殊的那就特殊处理下 mapper都是自动生成的,换了再生成成,覆盖了就行了 大家也都说了,没事谁会老换数据库玩,数据迁移一次也挺不容易的,而且有风险,相比之下,上面说的这点工作量也不算啥。
编号792458 2016-05-12
  • 打赏
  • 举报
回复
hibernate全自动的真心用不来,几百张表,光写关联关系就很麻烦,再加上hibernate执行效率较低,所以就用mybatis。你说的那种情况很少发生,而且就算改应该也不是很多。
ArayChou 2016-05-12
  • 打赏
  • 举报
回复
我想吐嘈mybatis, 文档基本上找不到!文档基本上找不到!文档基本上找不到! (连Annotation都没有文档,没有注释) 想扩展基本上很难!想扩展基本上很难!想扩展基本上很难!(依稀记得有interceptor的概念,我曾经尝试加入一个通用机制,想直接将复杂对象(属性为对象)保存进入数据库,最后放弃然后直接换了hibernate。不知道有没有大神有好的方案) 对enum的支持非常的不友好!对enum的支持非常的不友好!对enum的支持非常的不友好! 好处是,大家都对SQL掌握较好,想咋搞就咋搞。hibernate有一对新概念新机制要学习理解。 为啥大家都说SSH,而不是SSM,说明SSH要由于SSM,个人简介
oxcow 2016-05-12
  • 打赏
  • 举报
回复
引用 楼主 SCAUSCNU 的回复:
为何不选择另外一种orm,使得更改数据库时,sql语句可以不用变动? mybatis当从mysql改变成sqlserver时,sql语句如果变动,mapper都要重写的,好麻烦
没有那个项目组会随便换数据玩!项目开始时是肯定选好的。  看了下其他留言。 说先自己的感受。 以前用hibernate+oracle,觉得hibernate在处理表关联方便的确比较强,也真的是面向对象了。一旦掌握了,使用起来很顺手。映射很强大,某种情况下,你不会SQL也能很好的使用hibernate。但是入门难度稍微有点高,但遇到分库分表、读写分离就显的笨重了。同时对于一些复杂的查询,没法做到使用面向对象,最终还是要写原生SQL, 或者在ORACLE上写存储过程。 所以hibernate和oracle是黄金搭档,复杂SQL直接就用ORACLE存储过程搞定了,同时oracle也很少分库分表了! 再说mybatis吧,其实说白了就是对JDBC的粗封装。正因为粗所以可以更加灵活的使用。一般结合mysql使用。相对hibernate来说吧,mybatis确实不如其在面相对象方面强大,但很灵活,因为SQL什么的就是原生SQL,在一个,比起hibernate来说轻量级,更容易上手。当然分库分表、读写分离使用mybatis实现起来要被hibernate看起来容易点。 至于这两个用哪个,还是的看项目的实际情况决定了
CoderPrince 2016-05-12
  • 打赏
  • 举报
回复
hibernate配置起来要人命的,几百张表你去配置关联关系吧。 反正我是力挺mybatis
家里敷泥呀 2016-05-09
  • 打赏
  • 举报
回复
这种思维显然是以偏概全的模式。不能因为某一个缺点而否定整个产品的用途。试问,世界上存在绝对完美的软件吗?
baolongf 2016-05-09
  • 打赏
  • 举报
回复
哪有那么多公司经常更换数据库的
爱睡觉的阿狸 2016-05-08
  • 打赏
  • 举报
回复
那下次就用hibernate吧。。。
peiyangxinqu 2016-05-08
  • 打赏
  • 举报
回复
Hibernate写好实体类后,基本不需要做太多东西了,但是比较麻烦的是它的关联配置,很多时候是个难题,在就是查询语句自动生成不够灵活和高效,对一些dba不太友好。mybatis可控性比较好,你说的实体和映射以及配置文件可以通过官网提供的工具自动生成,学习成本相比hibernate要低很多。另外spring推出的spring data jpa跟hibernate相结合后虽然能解决查询灵活度问题,但是相对于mybatis来说还是不方便,建议你使用一下它们,自己就更能体会出其中的差异,从而在项目选型时,更贴近实际。 链接:http://www.zhihu.com/question/21104468/answer/17704347

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧