首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

Hibernate数据库连接的设立及其配置文件的书写

2012-11-19 
Hibernate数据库连接的设置及其配置文件的书写Hibernate数据库连接的设置及其配置文件的书写首先Hibernate

Hibernate数据库连接的设置及其配置文件的书写
Hibernate数据库连接的设置及其配置文件的书写
首先Hibernate的配置有两种情况1.管理环境中的配置。2.非管理环境中的配置。我们可以理解管理环境为它提供了自动的事务,资源管理和底层的安全结构。比如JBoss,BEA WebLogin或IBM Websphere都实现了标准的管理环境。而非管理环境与之相反没有提供自动的事务,资源管理和底层的安全结构。比如Jetty或Tomcat这样的servlet容器。

其次我们来看具体的数据库连接
在非管理环境中,我们的hibernate要去获得JDBC连接,如果我们为每个数据库的交互都去创建一个连接就比较浪费资源了,所以我们应该使用数据库连接池。而非管理环境又没有实现连接池,我们必须实现自己的池化算法或者依赖于第三方类库例如C3P0,因为Hibernate内置了对C3P0的支持,所以我们使用该连接池。不使用Hibernate时,应用代码通常直接调用连接池来获得JDBC连接并执行SQL语句。

在管理环境中,比如,J2EE应用服务器就是典型的管理环境。虽然应用服务器通常是为了支持EJB而设计的,但即使你不使用EJB实体Bean,你仍然可以利用它提供的其它服务。Hibernate经常与会话或消息驱动EJB一起使用,EJB调用相同的Hibernate API:Session(会话)、Transaction(事务)和Query(查询)。与Hibernate相关的代码在非管理与管理环境之间是完全可移植的,Hibernate透明地处理了不同的连接与事务策略。应用服务器将连接池对外显示为JNDI绑定数据源。它是javax.jdbc.Datasource类的一个实例。你需要提供一个JNDI全限定名来告诉Hibernate,到哪里去查找JNDI数据源。
比如:

hibernate.connection.datasource = java:/comp/env/jdbc/AuctionDBhibernate.transaction.factory_class = \net.sf.hibernate.transaction.JTATransactionFactoryhibernate.transaction.manager_lookup_class = \net.sf.hibernate.transaction.JBossTransactionManagerLookuphibernate.dialect = net.sf.hibernate.dialect.PostgreSQLDialect

但是我们要知道:引自《Hibernate in Action》
<!DOCTYPEhibernate-configurationPUBLIC"-//Hibernate/HibernateConfigurationDTD3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><!--设置数据库连接的驱动--><propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><!--设置所需连接数据库服务的URLlocalhost可以改成远程IP地址onlinestore为数据库名--><propertyname="hibernate.connection.url">jdbc:mysql://localhost/onlinestore</property><!--设置连接数据库的用户名--><propertyname="hibernate.connection.username">root</property><!--设置连接数据库的密码--><propertyname="hibernate.connection.password">root</property><!--设置显示sql语句方便调试--><propertyname="hibernate.show_sql">true</property><!--c3p0连接池的最大连接数--><propertyname="hibernate.c3p0.max_size">20</property><!--c3p0连接池的最小连接数--><propertyname="hibernate.c3p0.min_size">1</property><!--c3p0连接池连接的超时时长如果空闲连接的空闲超过了timeout,就会删除--><propertyname="hibernate.c3p0.timeout">1800</property><!--c3p0缓存Statement的数量数--><propertyname="hibernate.c3p0.max_statements">50</property><!--sql连接方言此处为MySQL--><propertyname="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property></session-factory></hibernate-configuration>

热点排行