hibernate和mybatis区别?

  1. hibernate是Table与对象的映射,适合于面向对象开发,实体清晰时适合使用;mybatis是sql与对象的映射,统计查询时适合使用。
  2. hibernate主要是配置实体关系,查询实体;mybatis主要是写sql;
  3. Mybatis由于所有SQL都是依赖数据库书写的,所以扩展性,迁移性比较差。
  4. Hibernate 自动生成sql,有些语句较为繁琐,不易查错,会多消耗一些性能;Mybatis 手动编写sql,可以避免不需要的查询,提高系统性能;

2. hibernate和mybatis缓存?

  1. (相同)都分为两级缓存,一级缓存和二级缓存;一级缓存都是session事务级别的,在一个事务中有效,事务执行完后缓存失效
  2. hibernate的二级缓存时应用进程级别的(SessionFactory范围内的缓存,所有的Session共享一个二级缓存),整个应用进程查询相同的sql时会使用二级缓存中的数据;
  3. Hibernate对查询对象有着良好的管理机制,用户无需关心SQL。所以在使用二级缓存时如果出现脏数据,系统会报出错误并提示。
  4. mybatis二级缓存是以namespace(一个mapper文件)为单位的缓存,可以让多个sqlSession共享,但不是应用程序级别
  5. mybatis二级缓存,在多个namespace中对同一个表有更新操作时会出现脏数据,造成查询错误。

3. hibernate

  • 3.1 get和load的区别?
  1. get会先查一级缓存,在查二级缓存,然后查数据库;load会先查一级缓存,如果没找到,就创建代理对象,等需要的时候去查询二级缓存和数据库
  2. get是立即加载,load是延时加载
  3. get如果没有找到会返回null,load如果没有找到会抛出异常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值