简体   繁体   English

如何使用连接池正确实现Hibernate连接工厂

[英]How to properly implement Hibernate connection factory with connection pool

I want to implement connection pool using Hibernate. 我想使用Hibernate实现连接池。 This is my configuration file: 这是我的配置文件:

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

I tried to implement this factory class: 我试图实现这个工厂类:

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;
    }
}

When I run 2 requests I get error factory is closed. 当我运行2个请求时,我得到错误工厂关闭。 Probably my code is not implement properly? 可能我的代码未正确实施?

You didn't configured your connection to datasource. 您没有配置与数据源的连接。 Instead of: 代替:

< property name="jndi.url">jdbc/sqliteDB < /property> <属性名称=“ jndi.url”> jdbc / sqliteDB </ property>

should be : 应该 :

< property name="hibernate.connection.datasource">java:comp/env/jdbc/sqliteDB< /property> <property name =“ hibernate.connection.datasource”> java:comp / env / jdbc / sqliteDB </ property>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM