如何正确启动SessionFactory?

时间:2017-10-09 15:44:01

标签: java hibernate

我需要在我网站的几乎每个页面都连接到我的数据库。

我的第一页是登录,因此我打算启动SessionFactory并将其保持打开状态,以便以后在其他页面中使用。

我的问题是:如何将变量声明为全局,以便我可以在其他类中使用它?

 public SessionFactory StartDatabaseConnection() {
    SessionFactory factory;

    try {
         factory = new Configuration().configure().buildSessionFactory();
    } catch (Throwable ex) {
        System.err.println("Failed to create sessionFactory object." + ex);
        throw new ExceptionInInitializerError(ex);
    }
    return factory;
}

我现在如何在这里使用它? factory doesn't exist in context

 private Integer addGeneralSetup(GeneralSetup generalSetup) {
    Session session = factory.openSession();
    Transaction tx = null;
    Integer generalSetupID = null;
    try{
        tx = session.beginTransaction();
        generalSetupID = (Integer) session.save(generalSetup);
        tx.commit();
    }catch (HibernateException e) {
        if (tx!=null) tx.rollback();
        e.printStackTrace();
    }finally {
        session.close();
    }
    return generalSetupID;
}

1 个答案:

答案 0 :(得分:0)

我认为最好的做法是使用singleton spring bean并在需要时注入依赖项。

Spring提供了两种方法来实现这一目标:  1. Spring内置了可以使用的模板     例如:



    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
&#13;
&#13;
&#13;

  1. 您可以使用默认范围声明自己的bean并自动连接它。 例如:
  2. &#13;
    &#13;
    <bean id="customBean" class="com.learn.custom.CustomBean" />
    &#13;
    &#13;
    &#13;