这是最好的SessoinFactory创建和池JDBC连接你。如果你采取这种方法,很简单,只要打开的org.hibernate.Session:
Session session = sessions.openSession(); // open a new Session

一旦你开始一个任务,需要对数据库的访问,将获得一个JDBC连接池。

你可以这样做之前,你首先需要传递一些JDBC连接的属性休眠。所有的Hibernate属性的名字和语义定义的类org.hibernate.cfg.Environment。最重要的设置JDBC连接配置概述如下。

Hibernate会获得并池连接使用java.sql.DriverManager,如果你设置以下属性:

Hibernate JDBC Properties

Property name Purpose
hibernate.connection.driver_class JDBC driver class
hibernate.connection.url JDBC URL
hibernate.connection.username database user
hibernate.connection.password database user password
hibernate.connection.pool_size maximum number of pooled connections

Hibernate自带的连接池算法,但是,相当简陋。它的目的是帮助你开始是不适合用在生产系统中,甚至是性能测试。你应该使用第三方的连接 池,以获得最佳的性能和稳定性。只需更换hibernate.connection.pool_size的属性连接池的具体设置。这将关闭 Hibernate自带的连接池。例如,您可能想用C3P0。

C3P0是一个开源的JDBC连接池,随Hibernate一同分发的lib目录中。 Hibernate将使用其org.hibernate.connection.C3P0ConnectionProvider为连接池,如果你设置 hibernate.c3p0。*性能。如果你想用Proxool,请参阅包装的hibernate.properties并到Hibernate网站获 取更多信息。

下面是一个为C3P0的hibernate.properties样例文件:

hibernate.connection.driver_class = org.postgresql.Driver
hibernate.connection.url = jdbc:postgresql://localhost/mydatabase
hibernate.connection.username = myuser
hibernate.connection.password = secret
hibernate.c3p0.min_size=5
hibernate.c3p0.max_size=20
hibernate.c3p0.timeout=1800
hibernate.c3p0.max_statements=50
hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect

对于内部使用的应用程序服务器,你应该几乎总是配置Hibernate获得javax.sql.DataSource的注册在JNDI的应用程序服务器的连接。您将需要设置以下属性中的至少一个:

Hibernate Datasource Properties

Property name Purpose
hibernate.connection.datasource datasource JNDI name
hibernate.jndi.url URL of the JNDI provider (optional)
hibernate.jndi.class class of the JNDI InitialContextFactory (optional)
hibernate.connection.username database user (optional)
hibernate.connection.password database user password (optional)

下面是一个应用程序服务器提供的JNDI数据源的hibernate.properties样例文件:

hibernate.connection.datasource = java:/comp/env/jdbc/test
hibernate.transaction.factory_class = \
org.hibernate.transaction.JTATransactionFactory
hibernate.transaction.manager_lookup_class = \
org.hibernate.transaction.JBossTransactionManagerLookup
hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect

从JNDI数据源获得的JDBC连接将自动参与到容器管理的事务的应用程序服务器。 可以任意连接属性的连接的属性名称由前面加上 “hibernate.connection”的。例如,你可以指定一个字符集连接属性hibernate.connection.charSet。 你可以定义你自己的插件策略获得JDBC连接的实现该接口org.hibernate.connection.ConnectionProvider,并 指定您的自定义实现通过hibernate.connection.provider_class属性。