程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Spring 3之前注入Hibernate会话的最佳方法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决在Spring 3之前注入Hibernate会话的最佳方法?

开发过程中遇到在Spring 3之前注入Hibernate会话的最佳方法的问题如何解决?下面主要结合日常开发的经验,给出你关于在Spring 3之前注入Hibernate会话的最佳方法的解决方法建议,希望对你解决在Spring 3之前注入Hibernate会话的最佳方法有所启发或帮助;

在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。

@Respository("productDao")
public class ProductDaoImpl implements ProductDao {

    @autowired
        private SessionFactory sessionFactory;

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

XML文件

<beans>

  <bean ID="myData@R_874_9016@e" class="org.apache.commons.dbcp.basicdata@R_874_9016@e" destroy-method="close">
    <property name="driverClassname" value="org.HSQLdb.jdbcDriver"/>
    <property name="url" value="jdbc:HSQLdb:HSQL://localhost:9001"/>
    <property name="username" value="sa"/>
    <property name="password" value=""/>
  </bean>

  <bean ID="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionfactorybean">
    <property name="data@R_874_9016@e" ref="myData@R_874_9016@e"/>
    <property name="mapPingresources">
      <List>
        <value>product.hbm.xml</value>
      </List>
    </property>
    <property name="hibernatePropertIEs">
      <value>
        hibernate.dialect=org.hibernate.dialect.HSQLDialect
      </value>
    </property>
  </bean>

</beans>

解决方法

我不确定使用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 3之前注入Hibernate会话的最佳方法全部内容,希望文章能够帮你解决在Spring 3之前注入Hibernate会话的最佳方法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:在Spring