当前位置: 首页 > 面试题库 >

在Spring 3之前注入Hibernate会话的最佳方法

郭凯
2023-03-14
问题内容

我不确定使用Spring3将Hibernate的会话实例注入DAO类的最佳方法是什么。我没有为此使用Spring的Hibernate
Template支持,所以这是我在DAO类中拥有的代码。

public void setSessionFactory(SessionFactory sessionFactory){
    this.sessionFactory=sessionFactory;
}


public SessionFactory getSessionFactory(){
    log.info("Returning a refrence to the session instance");
    if(sessionFactory==null){
         log.error("Not able to find any associated session");
         throw new RuntimeException("Not able to find any associated session");
    }
    return sessionFactory;
}

下面是将会话注入此方法的代码

<bean id="genericSessionFactory" class="HibernateSessionFactory"
        factory-method="getSessionfactory" scope="prototype/>

我不确定这是否是进行SessionFactory注入的最佳方法,因为我们不想在项目中使用Spring模板。因此,任何其他改进建议都将很有帮助。


问题答案:

在Spring参考建议这种用法:

public class ProductDaoImpl implements ProductDao {

    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    public Collection loadProductsByCategory(String category) {
        return this.sessionFactory.getCurrentSession()
                .createQuery(
                    "from test.Product product where product.category=?")
                .setParameter(0, category)
                .list();
    }
}

这样,您的类就不会对Spring有任何依赖,您只需使用普通的Hibernate。



 类似资料:
  • null 所以我创建了SFFactory类并在ApplicationConfig中注册它。 Sffactory.java ApplicationConfig.java

  • 问题内容: 我目前正在将带有mgo lib的mongodb用于Web应用程序,但是我不确定我使用它的方式是否很好。 我初始化db会话并创建获取集合和文档值的变量,因此当我需要查询集合时,我使用变量来实现它。 像那样 : 那么,有没有最佳实践呢?谢谢 问题答案: 我建议不要使用这样的全局会话。相反,您可以创建负责所有数据库交互的类型。例如: 该设计有很多好处。一个重要的方面是,它允许您同时运行多个会

  • 8.3. 会话注入 一个与会话暴露类似的问题是会话注入。此类攻击是基于你的WEB服务器除了对会话存储目录有读取权限外,还有写入权限。因此,存在着编写一段允许其他用户添加,编辑或删除会话的脚本的可能。下例显示了一个允许用户方便地编辑已存在的会话数据的HTML表单: <?php session_start(); ?> <form action="inject.php" method="POST"> <

  • 排定的方法保留有限数量的作业,并调用执行实际工作的上的方法。 异步处理机 @Async带注释的方法调用访问EntityManager的服务。

  • 问题内容: 我正在使用hibernate+播放!框架在工作中,是否有使用“hibernate”插入大量记录的“最佳实践”?每个文本文件大约有6,000到10,000个,所以我不知道Hibernate是否会扼杀工作或引发异常。 任何建议都让我知道,如果需要进一步说明,请告诉我 问题答案: 在* Java Persistence and Hibernate(Manning)中,并在Pangea的评论之

  • 问题内容: 我有一个使用spring和hibernate的java stuts2 Web应用程序。 我越来越。 SpringBean.xml hibernate.cfg.xml CustomerServiceImpl.java CustomerDaoImpl.java CustomerAction.java 我得到的例外 问题答案: 您在Spring配置中指定了一个事务管理器,但是没有关于何时或何