老规矩先说说Hibernate
当然也可以用代码
Hibernate的配置不需要接口和SQL,相反 My Batis是需要的。对于 Hibernate而言,不需要编写大量的SQL,就可以完全映射,同时提供了日志、缓存、级联(级联比 My Batis强大)等特性,此外还提供HQL( Hibernate Query Language)对POJO进行操作,使用十分方便,但是它也有致命的缺陷。
由于无须SQL,当多表关联超过3个的时候,通过 Hibernate的级联会造成太多性能的丢失;又或者我现在访问一个财务的表,然后它会关联财产信息表,财产又分为机械、原料等,显然机械和原料的字段是不一样的,这样关联字段只能根据特定的条件变化而变化
而 Hibernate无法支持这样的变化,遇到存储过程, Hibernate只能作罢。更为关键的是性能,
在管理系统的时代,对于性能的要求不是那么苛刻,但是在互联网时代性能就是系统的根本,响应过慢就会丧失客户,试想一下谁会去用一个经常需要等待超过10秒以上的应用。以上的问题 My Batis都可以解决, MyBatis可以自由书写SOL、支持动态SQL、处理
列表、动态生成表名、支持存储过程。这样就可以灵活地定义查询语句,满足各类需求和性能优化的需要,这些在互联网系统中是十分重要的
但 My Batis也有缺陷。
首先,它要编写SQL和映射规则,其工作量稍微大于 Hibernate
其次,它支持的工具也很有限,不能像 Hibernate那样有许多的插件可以帮助生成映射代码和关联关系,而即使使用生成工具,往往也需要开发者进一步简化, My Batis通过手工编码,工作量相对大些。
所以对于性能要求不太苛刻的系统,比如管理系统、ERP等推荐使用 Hibernate;而对于性能要求高、响应快、灵活的系统则推荐使用 MyBatis
说说miniDao
与mybatis对比
相同点:SQL语句和java代码的分离
不同点:
- O/R mapping不用设置xml,零配置,简单易用
- 可以自动生成SQL语句
- 接口和实现分离,不用写持久层代码,用户只需写接口,以及某些接口方法对应的SQL。它会通过AOP自动生成实现类
- 支持与hibernate轻量级无缝集成
- SQL支持更强大的脚本语言,可以写逻辑处理
- Sql 性能优于Mybatis
- Sql支持传递多个参数Map/Object/List/包装类型都可以
Mybatis只支持一个参数<Map/Object>? 应该不止吧。。。以后验证
---------------------
MiniDao是Jeecg自己的持久化解决方案,集成Hibernate实体维护和Mybaits SQL分离的两大优点。具有以下特征
l O/R mapping不用设置xml,零配置便于维护
l 不需要了解JDBC的知识
l SQL语句和java代码的分离
l 可以自动生成SQL语句
l 接口和实现分离,不用写持久层代码,用户只需写接口,以及某些接口方法
l 对应的SQL。它会通过AOP自动生成实现类
l 支持自动事务处理和手动事务处理
l 支持与hibernate轻量级无缝集成
l MiniDao整合Hibernate+mybatis的两大优势,支持实体维护和SQL分离SQL支持脚本语言
l Sql 性能优于Mybatis
※向下兼容Hibernate实体维护方式,实体的增删改查SQL自动生成