mybatis和hibernate的区别

hibernate作为一款数据库翻译工具解决了程序员在不同数据库之间的游走问题,但是在级联方面如果双向关联后查询数据可能会带来无限查询而进入死循环的状态的影响。所以为了避免这样的问题,我们可以采用mybatis替换hibernate。接下来给大家分享两者的不同之处:
1·hibernate可以通过对象和数据库的映射达到自动建立数据库的功能,也就是当我们建立好对象之后,进行注解设置(如:@Entity,@Id,@column等等),,如果是用的spring,就在spring的配置文件中设置一下,服务器启动就可以自动创建数据库,我们在操作数据库的时候可以把注意力集中放在对象上面,而mybatis不能自动创建数据库。
2·hibernate操作数据库是面向对象的,也就是根据对象查询数据库,这样可以避免链接查询等复杂的sql语句,查询方式相对比mybatis方便简单。mybatis不是面向对象进行查询,而是使用特定的增删查改方法加载配置文件里面书写的sql语句。
3·mybatis一对多,多对一,一对一等关系是配置文件中写的sql语句确定的,对于对象之间的关系可以认为控制,可控性很强,但是在hibernate中对象之间的这种关系是通过注解的方式确定的,关系不灵活。
4·在hibernate中对象之间可以设置级联关系,默认情况下一对多的查询是懒加载方式,多对一是活跃加载,也可以通过手动设置级联关系。但是问题就在于在查询时如果级联是双向的,在查询到以对象作为属性的属性时,又会再一次查询回来,也就是通过老师查询到学生后,由于学生中有老师这个对象作为属性,所以还会查询到老师,随后不断重复进入循环查询。而在mybatis中这种情况就不会出现,当如期查到对象后如果会有进入循环查询的情况就会将学生中的老师设为null,有效避免hibernate的不足。
5·在mybatis中有一核心功能之一:动态sql.由于在项目中会出现多条件查询,条件太多就会是sql语句繁琐复杂冗长,mybatis就提供了一些标签:if,where,set,foreach,trim,choose等,可以进行sql语句的拼接,方便,实用。而在hibernate中没有这些功能。
6·hibernate使用的时候,由于是面向对象,但是操作数据库还是会涉及到sql语句,hibernate所采用的方式是针对不同的数据库方言,将hql语句转化为sql语句。但是mybatis就是直接写的sql语句,所以两者相比,mybatis的效率会高于hibernate。


总结一下:两种框架各有优势,在市面上也是用的最多的两种框架,具体选用哪一种,这得根据公司的实际情况和你对他们的感觉了,俗话说,只要感觉到了,哪里还在乎那么多。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值