Hibernate---配置文件

简介

Hibernate 需要事先知道在哪里找到映射信息,这些映射信息定义了 Java 类怎样关联到数据库表。Hibernate 也需要一套相关数据库和其它相关参数的配置设置。所有这些信息通常是作为一个标准的 Java 属性文件提供的,名叫 hibernate.properties。又或者是作为 XML 文件提供的,名叫 hibernate.cfg.xml

我们将考虑 hibernate.cfg.xml 这个 XML 格式文件,来决定在我的例子里指定需要的 Hibernate 应用属性。这个 XML 文件中大多数的属性是不需要修改的。这个文件保存在应用程序的类路径的根目录(src)里。

Hibernate 属性

下面是一个重要的属性列表,你可能需要表中的属性来在单独的情况下配置数据库。

  • hibernate.dialect

  这个属性使 Hibernate 应用为被选择的数据库生成适当的 SQL。

  • hibernate.connection.driver_class

  JDBC 驱动程序类。

  • hibernate.connection.url

  数据库实例的 JDBC URL。

  • hibernate.connection.username

  数据库用户名。

  • hibernate.connection.password

  数据库密码。

  • hibernate.connection.pool_size

  限制在 Hibernate 应用数据库连接池中连接的数量。

  • hibernate.connection.autocommit

  允许在 JDBC 连接中使用自动提交模式。

如果您正在使用 JNDI 和数据库应用程序服务器然后您必须配置以下属性:

  • hibernate.connection.datasource

  在应用程序服务器环境中您正在使用的应用程序 JNDI 名。

  • hibernate.jndi.class

  JNDI 的 InitialContext 类。

  • hibernate.jndi.<JNDIpropertyname>

  在 JNDI的 InitialContext 类中通过任何你想要的 Java 命名和目录接口属性。

  • hibernate.jndi.url

  为 JNDI 提供 URL。

  • hibernate.connection.username

  数据库用户名。

  • hibernate.connection.password

  数据库密码。

方言属性

数据库方言属性
DB2 org.hibernate.dialect.DB2Dialect
HSQLDB org.hibernate.dialect.HSQLDialect
HypersonicSQL org.hibernate.dialect.HSQLDialect
Informix org.hibernate.dialect.InformixDialect
Ingres org.hibernate.dialect.IngresDialect
Interbase org.hibernate.dialect.InterbaseDialect
Microsoft SQL Server 2000 org.hibernate.dialect.SQLServerDialect
Microsoft SQL Server 2005 org.hibernate.dialect.SQLServer2005Dialect
Microsoft SQL Server 2008 org.hibernate.dialect.SQLServer2008Dialect
MySQL org.hibernate.dialect.MySQLDialect
MySQL新版本中org.hibernate.dialect.MySQLDialect已不适用,在创建表时,会报错 org.hibernate.dialect.MySQL5InnoDBDialect
Oracle (any version) org.hibernate.dialect.OracleDialect
Oracle 11g org.hibernate.dialect.Oracle10gDialect
Oracle 10g org.hibernate.dialect.Oracle10gDialect
Oracle 9i org.hibernate.dialect.Oracle9iDialect
PostgreSQL org.hibernate.dialect.PostgreSQLDialect
Progress org.hibernate.dialect.ProgressDialect
SAP DB org.hibernate.dialect.SAPDBDialect
Sybase org.hibernate.dialect.SybaseDialect
Sybase Anywhere org.hibernate.dialect.SybaseAnywhereDialec

配置文件示例

<!-- ~ Hibernate, Relational Persistence for Idiomatic Java ~ ~ License: 
    GNU Lesser General Public License (LGPL), version 2.1 or later. ~ See the 
    lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. -->
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <!--配置mysql数据库的连接参数 -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
        <!-- 驱动程序名 -->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <!-- 数据库名称 -->
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jsp_db</property>
        <!-- 用户名 -->
        <property name="hibernate.connection.username">root</property>
        <!-- 密码 -->
        <property name="hibernate.connection.password">Lfq,909475</property>

        <!-- 显示SQL语句 -->
        <property name="show_sql">true</property>
        <!-- 格式化输出SQL语句 -->
        <property name="format_sql">true</property>
        
        <property name="hbm2ddl.auto">create</property>
        
        <mapping resource="com/hibernate/study/entity/Student.hbm.xml" />
        
    </session-factory>
</hibernate-configuration>

上述配置文件中,hbm2ddl.auto属性有四个可选值:如果不确定如何设置这个值的话,就设置为“none”

定义
update 最常用的值,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会
validate 每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值
create 每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行
create-drop 每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除
原文地址:https://www.cnblogs.com/xiaobaizhiqian/p/7912069.html