老师,您好。之前一直使用Hibernate做数据库中间件,后面看到现在公司主流都是使用Mybatis。所以想请问一下,这两个如果不从历史背景来看,应该怎么进行选择?感谢。
Hibernate 在简单场景下会用得很爽,如果表关联和复杂查询不多 Hibernate 够用的话,使用 Spring-data-jpa 的编程体验非常棒,写一个接口就可以自动生成查询。Hibernate 的真正掌握要比 Mybatis 困难。比如 HQL 或者 JPQL 只是一个 SQL 的子集,只支持左连接,对原生数据库的很多函数也支持不好,比如需要拼接或者时间计算。如果您想用 SQL 的底层能力,那 Mybatis 是更好的选择。但是 Mybatis 的开发效率和可移植性没有那么高。不是说 Hibernate 可以一行不改的移植数据库,但是想改还是改得动的。我们开发的项目本地就用 h2 等内存数据库,用 Hibernate 改一个方言就 OK 了。不过话说回来,对于普通项目l数据库的可移植性没有那么大的价值,很少有换数据库的场景。但是如果你开发一个产品,要给用户自由选择数据库的能力时,比如一个博客程序兼容很多种数据库,那 Hibernate 还是小有优势的。
这个需要看你的实际情况。Hibernate是完整的ORM框架,使用它基本上不需要你了解数据库和SQL,而MyBatis是半ORM框架,需要你有良好的SQL基础。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。