2017-07-02 97 views
0

我想用Hibernate来实现连接池。这是我的配置文件:如何正确实现连接池的Hibernate连接工厂

<hibernate-configuration> 
    <session-factory> 
     <property name="hibernate.show_sql">true</property> 
     <property name="hibernate.format_sql">true</property> 
     <property name="jndi.url">jdbc/sqliteDB</property> 
     <property name="hibernate.dialect">org.hibernate.dialect.SQLiteDialect</property> 
     <property name="hibernate.connection.driver_class">org.sqlite.JDBC</property> 
     <property name="hibernate.connection.release_mode">auto</property> 
     <property name="current_session_context_class">thread</property> 
     <property name="hibernate.connection.autoReconnect">true</property> 
     <property name="hibernate.hbm2ddl.auto">update</property> 
     <mapping class="com.web.models.SystemUsers"/> 
    </session-factory> 
</hibernate-configuration> 

我试图实现这个工厂类:

public class HibernateUtil 
{ 
    private static final SessionFactory sessionFactory; 
    private static ServiceRegistry serviceRegistry; 

    static 
    { 
     try 
     { 
      StandardServiceRegistry standardRegistry 
       = new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build(); 
      Metadata metaData 
       = new MetadataSources(standardRegistry).getMetadataBuilder().build(); 
      sessionFactory = metaData.getSessionFactoryBuilder().build(); 
     } 
     catch (Throwable th) 
     { 
      System.err.println("Enitial SessionFactory creation failed" + th); 
      throw new ExceptionInInitializerError(th); 
     } 
    } 

    public static SessionFactory getSessionFactory() 
    { 
     return sessionFactory; 
    } 
} 

当我运行2个请求,我得到错误的工厂被关闭。可能我的代码没有正确实现?

+0

请发布调用数据库访问的堆栈trance和代码。 – Justas

回答

1

您没有配置到数据源的连接。相反的:

<属性名= “jndi.url”> JDBC/sqliteDB < /属性>

应该是:

<属性名= “hibernate.connection.datasource”> Java的:补偿/ env/jdbc/sqliteDB </property>

+0

如果它解决了你的问题请关闭并解释第二个问题,因为这是重复的 – xyz