Hibernate配置说明

2011-11-27

Hibernate配置说明

博客分类:程序设计

Hibernate配置

Hibernate配置说明

首先说明一下,是用MySQL为例配置的,并且可以正常使用,至于其它数据库配置,也有详解,但是本人没有亲自验证,如有错误,请谅解

笔者先给出自己的配置文件,然后再详解

Xml代码

<?xmlversion="1.0"encoding="utf-8"?>

<!DOCTYPEhibernate-configuration

PUBLIC"-//Hibernate/HibernateConfigurationDTD//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

<!--启动服务器时,自动更新数据库.开发结束以后,删掉下面这行-->

<propertyname="hibernate.hbm2ddl.auto">update</property>

<!--JDBC数据库连接的URL-->

<propertyname="hibernate.connection.url">jdbc:mysql://localhost:3306/databasename?characterEncoding=UTF-8</property>

<!--JDBC驱动类-->

<propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

<!--用户名-->

<propertyname="hibernate.connection.username">root</property>

<!--密码-->

<propertyname="hibernate.connection.password">123456</property>

<!--Hibernate数据库方言-->

<propertyname="dialect">org.hibernate.dialect.MySQLDialect</property>

<!--是否显示SQL语句-->

<propertyname="hibernate.show_sql">false</property>

<!--配置数据库连接池-->

<!--Hibernate连接池类名-->

<propertyname="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>

<!--最大连接数-->

<propertyname="hibernate.c3p0.max_size">100</property>

<!--最小连接数-->

<propertyname="hibernate.c3p0.min_size">10</property>

<!--获得连接的超时时间,如果超过这个时间,会抛出异常,单位秒-->

<propertyname="hibernate.c3p0.timeout">120</property>

<!--最大的预编译语句的数量-->

<propertyname="hibernate.c3p0.max_statements">50</property>

<!--每隔多少秒检查连接池里的空闲连接,单位是秒-->

<propertyname="hibernate.c3p0.idle_test_period">120</property>

<!--当连接池里面的连接用完的时候,C3P0一下获取的新的连接数-->

<propertyname="hibernate.c3p0.acquire_increment">2</property>

<!--每次都验证连接是否可用-->

<propertyname="hibernate.c3p0.validate">true</property>

<!--指定的映射类-->

<mappingclass="edu.xmu.auto.entity.Role"/>

<mappingclass="edu.xmu.auto.entity.User"/>

</session-factory>

</hibernate-configuration>

现在开始详解:

首先是文件头部分,这部分就不用解释了吧,当然也不需要自己去记忆。可以直接到官网给出的demo拷贝这部分

Xml代码

<?xmlversion="1.0"encoding="utf-8"?>

<!DOCTYPEhibernate-configuration

PUBLIC"-//Hibernate/HibernateConfigurationDTD//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

接下来就是如何配置Hibernate了,Hibernate的配置文件都放在下面标签内,不解释

Xml代码

<hibernate-configuration>

<session-factory>

<!--配置文件内容-->

</session-factory>

</hibernate-configuration>

下面的才是重点:

<!--启动服务器时,自动更新数据库,不过MySQL或其它数据库中要有你自己创建的数据库名,里面可以没有表.开发结束以后,可以去掉这个属性-->

<!--这里有这样4个值可选:updatecreatecreate-dropvalidate,个人建议用update

validate加载hibernate时,验证创建数据库表结构

create每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。

create-drop加载hibernate时创建,退出是删除表结构

update加载hibernate自动更新数据库结构,但不会删除原有数据

-->

Xml代码

<propertyname="hibernate.hbm2ddl.auto">update</property>

<!--JDBC数据库连接的URL-->

<!--

MySQL数据库URL:jdbc:mysql://ip:port/databasename,port默认为3306

Oracle数据库URL:jdbc:oracle:thin:@ip:port:databasename,port默认为1521

SQLServer数据库URL:jdbc:microsoft:sqlserver://ip:port;DatabaseName=databasename,port默认为1433

如果数据库是在远程电脑,则将localhost换为对应的IP地址;

将databasename换成对应的数据库名;

编码方式根据数据库的编码设置,数据库的编码方式是什么,就改为什么

-->

Xml代码

<propertyname="hibernate.connection.url">jdbc:mysql://localhost:3306/databasename?characterEncoding=UTF-8</property>

<!--JDBC驱动类-->

<!--

至于需要添加的jar包,自己百度下面的驱动类名,就可以找到了

MySQL数据库驱动:com.mysql.jdbc.Driver

SQLServer数据库驱动:com.microsoft.jdbc.sqlserver.SQLServerDriver

Oracle数据库驱动:oracle.jdbc.driver.OracleDriver

-->

Xml代码

<propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

<!--用户名-->

<!--

MySQL数据库默认用户名是root

Oracle数据库默认用户名为sysdba

SQLServer数据库默认用户名为sa

-->

Xml代码

<propertyname="hibernate.connection.username">root</property>

<!--密码,不用解释吧-->

Xml代码

<propertyname="hibernate.connection.password">123456</property>

<!--Hibernate数据库方言-->

<!--

MySQL数据库方言为org.hibernate.dialect.MySQLDialect

Oracle9i/10g数据库方言为org.hibernate.dialect.Oracle9Dialect

SQLServer数据库方言为org.hibernate.dialect.SQLServerDialect

-->

Xml代码

<propertyname="dialect">org.hibernate.dialect.MySQLDialect</property>

<!--是否在控制台显示SQL语句,方便调试。开发过程可以设为true,开发结束以后设为false-->

<!--

允许的值为true和false

-->

Xml代码

<propertyname="hibernate.show_sql">false</property>

<!--配置数据库连接池,,默认情况下(即没有配置连接池的情况下),Hibernate会采用内建的连接池。但这个连接池性能不佳,且存在诸多BUG。Hibernate支持第三方的连接池,官方推荐的连接池是C3P0,Proxool-->

<!--Hibernate连接池类名,我现在用的是C3P0-->

Xml代码

<propertyname="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>

<!--最大连接数-->

Xml代码

<propertyname="hibernate.c3p0.max_size">100</property>

<!--最小连接数-->

Xml代码

<propertyname="hibernate.c3p0.min_size">10</property>

<!--获得连接的超时时间,如果超过这个时间,会抛出异常,单位秒-->

Xml代码

<propertyname="hibernate.c3p0.timeout">120</property>

<!--最大的预编译语句的数量-->

Xml代码

<propertyname="hibernate.c3p0.max_statements">50</property>

<!--每隔多少秒检查连接池里的空闲连接,单位是秒-->

Xml代码

<propertyname="hibernate.c3p0.idle_test_period">120</property>

<!--当连接池里面的连接用完的时候,C3P0一下获取的新的连接数-->

Xml代码

<propertyname="hibernate.c3p0.acquire_increment">2</property>

<!--每次都验证连接是否可用,允许值true,false-->

Xml代码

<propertyname="hibernate.c3p0.validate">true</property>

<!--指定的映射-->

<!--

映射通常有两种形式,一种是<mappingresource="com/mycom/entity/User.hbm.xml"/>,这种形式是通过映射文件来处理映射关系的,笔者的建议是,如果你想通过数据库生成java类,那么你就用这种方式。直接利用HibernateSychronizer插件来生成。否则的话,配置xml文件极为繁琐,而且当变动数据库模型的时候,有可能出错

-->

Xml代码

<mappingclass="com.mycom.entity.User"/>

<mappingclass="com.mycom.entity.Role"/>

<!--

<mappingresource="com/mycom/entity/User.hbm.xml"/>

<mappingresource="com/mycom/entity/User.hbm.xml"/>

-->

相关推荐