现在要为一家公司做成本管理系统和OA系统 mybatis 和hibernate的选择还有些纠结

需求是
“没有大量数据存取
逻辑相对比较简单。
有一些相对比较复杂的报表
性能要求不高 90%的局域网作业和10%的www网作业
前端用的Extjs4
单表查询非常多。”

1,数据量不大 直接hibernate吧,性能逼mybatis稍微差点,但是差的不多,特别是批量处理,比mybatis还稍微强那么一点点。

2,还有就是假如查询的地方很多(你不是有很多报表么),那么还是推荐mybatis,因为这个是mybatis的强项,虽然hibernate方便,但是一般报表导出的都是很多表的数据(各种关联 还有合并聚合等数据库操作),用mybatis方便多了,而hibernate逊色不少。

所以综上所述,我觉得mybatis更适合,而hibernate是在极为理想的情况下去用,切记切记!

我觉得用mybatis更好,首先,sql层面上的问题很容易解决,也可以写出很复杂的sql,这对于复杂报表更好福音

但即使知道hibernate生成的sql有问题,要将其纠正会有牵一发动全身的可能

这种数据量不大、逻辑简单、重点在于出报表的需求,我觉得使用JDBC就完全够了。
如果嫌JDBC太原始,可以使用HIBERNATE,发竟使用的人多还是有他的道理的。但我首推 JDBC。

Hibernate 很好啊!复杂的查询可以hibernate 提供HibernateCallback 你可以获得 connection 用jdbc 方式啊!及可以用它的方便,也不失去灵活

HibernateTemplate还提供一种更加灵活的方式来操作数据库,通过这种方式可以完全使用Hibernate的操作方式。HibernateTemplate的灵活访问方式是通过如下两个方法完成:

q Object execute(HibernateCallback action)

q List execute(HibernateCallback action)

这两个方法都需要一个HibernateCallback的实例,HibernateCallback实例可在任何有效的Hibernate数据访问中使用。程序开发者通过HibernateCallback,可以完全使用Hibernate灵活的方式来访问数据库,解决Spring封装Hibernate后灵活性不足的缺陷。HibernateCallback是一个接口,该接口只有一个方法doInHibernate(org.hibernate.Session session),该方法只有一个参数Session。
一般自己实现doInHibernate 方法就可以了!
其实是用的Java设计模式的模板模式

[quote]如果用mybatis 是不是要手动的把查询得到的对象封装成类?
另外如果用mybatis 查询 之后再封装成类(我同事的一些做法)
这样不就成了hibernate的思想了吗 这样使用mybatis 有意义吗?[/quote]
你只需要把sql配置在xml,mybatis会给你自动封装。
虽然和hibernate有些相似,但是有本质差别。
hibernate是对象和数据库的记录做映射
而mybatis是sql和数据库的记录做映射。
mybatis最大的能力就是可以解决非常复杂的动态sql拼接 不是一般的方便。

[quote]说的主要是把数据集封装成对象这一操作。
hibernate是自动的。
mybatis没用过,是不是必须手动写类[/quote]
这个也是自动的,也可以很方便的自动封装成map结构等等

[quote]
mybatis没用过,是不是必须手动写类?
[/quote]
也自动