iBatis / MyBatis意见

时间:2011-02-24 01:40:00

标签: nhibernate orm ibatis mybatis

您对iBatis / MyBatis有何看法?在性能和灵活性方面。

您认为它如何与其他C#ORM叠加?

C#版本是否相当稳定可用?缓存是否运作良好?

2 个答案:

答案 0 :(得分:1)

我喜欢mybatis,我们最近开始用mybatis 3.0.4编写新服务,从iBatis 2.x升级。

我觉得mybatis有更多的工具可以让开发更容易,类型安全,广泛的注释功能,在传递多个参数时没有更多的哈希映射(@param标签),在我看来值得单独升级。我只提到了一些新的好东西。

在Java方面,guice集成是一种礼物。

答案 1 :(得分:1)

我真的很喜欢mybatis,但即使如此,我也看到了一些错误。

例如,当我们实现一个分页解决方案时,我们不得不编写一个告诉mybatis停止CACHING STUFF的拦截器,因为它看到了记录和一个rowcount,并且由于某种原因创建了一个“缓存密钥”,它只使用了记录的存在(甚至没有对它进行“等于”调用)和与下一个记录和rowcount匹配的rowcount(虽然它是一个不同的记录,如果调用了equals,它将不匹配)。后来我们将rownum包括在内,以解决另一个类似的问题。拦截器实际上必须通过使用反射断开访问来反省(yuck!),以便查看处理程序是否是我们自己的处理程序,因为该字段没有getter而且它是私有的。

其次,我已经看到mybatis 构造一个要返回的对象,但是一切都是null,所以它只返回null而不是它构造的记录 - 这是一个严重的错误。我们解决了这个问题,因为我们返回的东西是版本化的,所以版本不是null,所以我们返回了它,因此返回了记录。

此外,您期望通过类型安全处理程序实现的一些方法实际上实现。小心那些。

我们使用spring集成,但它实际上只是将SqlSession包装为autoclose - 底层问题来自Mybatis代码。我在这里注意到的基于Java的经验。

此外,即使有“批处理”语句,我还没有在API中看到任何表明您可以真正执行批处理语句的内容 - 因此,如果您需要这种功能,则必须使用其他功能或者只是一个一个地去。