关于mybatis、Hibernate、Jpa的一些经验之谈

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Ch_en_x/article/details/84697813

参加工作几年,也有了一点小小心得,闲暇时将自己平时遇到的一些问题思考写下来,希望有志同道合的朋友一起参与讨论,共同进步。

网上已经有很多关于mybatis、hibernate、jpa的基本知识介绍了,这些我也不打算全部复制粘贴下来,我主要是想讲一下自己的想法和理解,有什么错误的地方请大家指正,谢谢!

首先讲下jpa,在之前的开发工作中用的最多的就是mybatis和hibernate,在最近的一个项目中才用到jpa。算起来,在java开发中,这方面应该是算有经验的吧(不清楚其他公司的情况>_<)。

jpa不是框架,是一种规范,一种约定。

在关联查询中,使用jpa真的很方便,只要你在实体类中做好关联映射,基本的增删改查操作起来简单的飞起,都不用写sql。

看了一些文章,说hibernate是jpa的实现,jpa能做了hibernate都继承了,还添加了一些自己的特色(具体是什么,也不是很理解,希望有会的给我回两句,谢谢!),就是封装了jpa的注解什么的。

但是在微服务中,使用hibernate有点问题:比如1在数据库中有一张user表,在微服务A中想要user对象直接发送给微服务B,那么B服务一定要有关于user表的映射关系,不然会报错(具体的异常,也不是很清楚了..jj),有时在微服务B中还不能将微服务A发送过来的user转成自己的user对象。因此微服务之间的通信,我们不会直接将对象给另一个微服务,而是使用json字符串的方式传参。所以,我觉得在微服务中不是很适合使用hibernate。

讲下mybatis,我觉得mybatis最大的特色就是可以在xml中写sql,虽然也可以用注解的方式实现,但是我觉得在xml中写sql是最好的,理由:1、在注解中写sql,造成sql与java代码的耦合度过强;2、如果有dba(绝大部分公司没有,我公司也没有..),可以将xml直接发过去,给他们优化,想想如果是用注解写,怎么搞?3、可读性方面,本人觉得写在xml上,读起来比较方便,特别是复杂的sql;4、当项目开发完成后,一般程序员都会转到其他项目,一段时间后,sql出现bug,再回来看时,要回忆起来也需要不少时间。所以,我觉得用mybatis最好就是写xml。

在新项目开始时,一般都会进行技术选型,大公司的情况我不是很清楚,我讲一下我公司的情况。我公司主要是给南方电网做外包工作的,一般的情况下是甲方出方案,我们开发,有时甲方也会有架构师、高级程序员来参与,当然我公司也是有背景的,合作项目基本都是我们做主导。有我们主导的项目,在技术上的选中有很大的灵活性,基本都是公司的大牛觉得什么技术好就用什么(当然,我还没有到这种层次,在路上...),有空也会向他们请教。主要是根据业务情况来现在使用哪种技术,比如在数据库框架方面,如果你的项目偏向业务的,需要关联查询,使用jpa就方便很多,用mybatis就要手动改xml,太麻烦了。

 

 

展开阅读全文

没有更多推荐了,返回首页