我的产品的数据访问层今天使用Hibernate作为OR映射框架。将来想使用其他框架,如iBatis。
答案 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。