有没有Hibernate的替代方案?最好不要基于JPA。
我们的问题是,我们正在构建一个复杂的(也就是很多对象彼此引用)有状态的RIA系统。似乎Hibernate主要设计用于一次性应用程序 - JSF等等。
问题主要在于延迟加载。由于在初始化和实际加载延迟集合之间可能会有几个HTTP请求,因此每次事务都使用一个会话是行不通的。长期会话(每个应用程序一个)也不起作用,因为一旦交易遇到问题并抛出异常,整个会话将无效,从而使延迟加载的对象无法使用。然后,还有各种各样的东西对我们不起作用(例如来自已初始化的事务外部的数据隐式持久化)。
撇开我的糟糕解释不谈,归根结底,Hibernate做了我们不喜欢的魔术。似乎TopLink也不见得更好,它也是基于EJB编写的。
因此,我们最需要的是一个无状态的持久层(甚至是足够聪明的面向对象数据库抽象层)。
有什么想法,或者我正在寻找不存在的东西吗?
编辑:对于我的模糊术语表示歉意,并感谢您们纠正和有见地的答案。那些纠正我的人,你们都是正确的,我所说的是JPA,而不是EJB。
我们的问题是,我们正在构建一个复杂的(也就是很多对象彼此引用)有状态的RIA系统。似乎Hibernate主要设计用于一次性应用程序 - JSF等等。
问题主要在于延迟加载。由于在初始化和实际加载延迟集合之间可能会有几个HTTP请求,因此每次事务都使用一个会话是行不通的。长期会话(每个应用程序一个)也不起作用,因为一旦交易遇到问题并抛出异常,整个会话将无效,从而使延迟加载的对象无法使用。然后,还有各种各样的东西对我们不起作用(例如来自已初始化的事务外部的数据隐式持久化)。
撇开我的糟糕解释不谈,归根结底,Hibernate做了我们不喜欢的魔术。似乎TopLink也不见得更好,它也是基于EJB编写的。
因此,我们最需要的是一个无状态的持久层(甚至是足够聪明的面向对象数据库抽象层)。
有什么想法,或者我正在寻找不存在的东西吗?
编辑:对于我的模糊术语表示歉意,并感谢您们纠正和有见地的答案。那些纠正我的人,你们都是正确的,我所说的是JPA,而不是EJB。