Java 有没有一种推荐的方法可以获得Spring 2.5+;自动连接休眠域对象的步骤

Java 有没有一种推荐的方法可以获得Spring 2.5+;自动连接休眠域对象的步骤,java,hibernate,spring,orm,inversion-of-control,Java,Hibernate,Spring,Orm,Inversion Of Control,有没有推荐的方法可以让Spring2.5+自动连接Hibernate(3.0+)域对象。我意识到使用AspectJ(@Configurable)可以实现这一点,但我希望避免使用AspectJ 一些谷歌搜索发现,但它似乎只是生活在沙箱中(和2.0.x?) 我可以创建一个10行HibernatePreloeventListener来为我进行自动连接,但我真的认为这是org.springframework.orm.hibernate3提供的东西。你能给出一个代码示例吗 我发现整个“贫血领域模型”反模式

有没有推荐的方法可以让Spring2.5+自动连接Hibernate(3.0+)域对象。我意识到使用AspectJ(
@Configurable
)可以实现这一点,但我希望避免使用AspectJ

一些谷歌搜索发现,但它似乎只是生活在沙箱中(和2.0.x?)


我可以创建一个10行Hibernate
PreloeventListener
来为我进行自动连接,但我真的认为这是
org.springframework.orm.hibernate3
提供的东西。

你能给出一个代码示例吗

我发现整个“贫血领域模型”反模式很难实现。我认为这在理论上听起来不错,但在实践中却不太好


是什么因素促使您采用富域模型方法?

请查看@Repository(和@Component)注释。在Spring2.5中,Spring2.0中引入的“原型”注释的概念得到了扩展,这些注释都得到了Spring文档一章中解释的新组件扫描功能的支持

因此,这应该是可行的:

@Repository
public class HibernateClinic implements Clinic {

    private SessionFactory sessionFactory;

    public HibernateClinic(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    public Collection getVetTypes() {
        Session session = sessionFactory.getCurrentSession();
        return session.createQuery(”from VetTypes”).list();
    }
}
(样本取自Rossen Stoyanchev在Metropolis 2008的演讲)

为Spring无法控制的实例提供依赖注入的推荐方法是使用您提到的基于AspectJ的解决方案。据我所知,特定于Hibernate的类已经被放弃,取而代之的是所描述的一般方法

还请注意,如果使用
AbstractInterfacedDriveIndependencyInjectionSpect
,则不需要
@可配置
。正如您所说,您将需要使用AspectJ进行加载时或编译时编织。作为一个好处,您也可以通过这种方法获得“角落案例”(如反序列化)的依赖注入


有关如何实现和集成Ramnivas建议的模式的全面示例,请看。

“反模式很难实现?这听起来很奇怪。这就是您想说的吗?这根本不能回答问题。您是在自动连接存储库,而不是域对象。