不同OR映射框架的抽象

时间:2011-11-08 11:48:57

标签: hibernate ibatis

我的产品的数据访问层今天使用Hibernate作为OR映射框架。将来想使用其他框架,如iBatis。

  1. 在这些OR映射框架之上设计这样一个抽象层的最佳方法是什么?
  2. 是否有任何此类框架可用?
  3. 我想设计这样一个系统,通过简单的配置更改,我应该可以在这些OR框架之间切换。

3 个答案:

答案 0 :(得分:1)

我不认为在hibernate / ibatis之上添加抽象是有道理的。它们是完全不同的框架 - 即使你能够创建一个共同的api - 它也会遗漏元数据部分(你的代码更依赖于它)。你应该认真考虑为什么需要它以及它会是什么样子。 Already people are complaining about too many levels of abstractions - 添加更多只会让事情变得更加困难。

更好的解决方案是将大多数域逻辑与依赖于持久性/事务/安全性等(域驱动设计)隔离开来。这样,如果您必须更改其中一个的实现,您可能能够保留应用程序逻辑的重要部分。

看看spring-data它与您正在寻找的抽象类型不同。

答案 1 :(得分:0)

问题是iBatis不是ORM框架,而Hibernate是。 iBatis是将具体的SQL语句映射到对象,而Hibernate试图以更抽象的方式解决对象关系映射(和不匹配)。

几年前,Hibernate的核心功能子集已经标准化为JPA。以JPA方式执行操作是有意义的(因此您可以切换JPA供应商 - Hibernate,EclipseLink,ObjectDB)。

然而,在不同的方法(如Hibernate vs iBatis)之上构建一些抽象并不是很有意义。

答案 2 :(得分:0)

首先,我完全赞同Xorty关于iBatis与Hibernate框架的回复。

除了一件事。您可以考虑在iBatis和Hibernate之间切换。 我建议你阅读iBatis In Action书,第10章,第11章。你会发现有一个iBatis配置的例子,你可以通过iBatis sql map文件配置/使用带有DAO模式的iBatis和Hibernate及其实现,Hibernate和JDBC。