• 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一关闭,表就自动删除
  • 相关阅读:
    生产者-消费者问题
    【k8s】4-Service转发规则 ingress 七层代理
    【k8s】3-kubectl 命令以及 yaml文件学习
    【k8s】2-安装部署 以及flannel访问失败问题 The connection to the server raw.githubusercontent.com was refused
    【k8s】1-kubernetes组件介绍 网络情况 汇总
    Django xadmin 学习转载
    【python】字节转换 base64 encode decode pickle
    【Django】windows安装fdfs_client-py-master.zip 出现 error: Microsoft Visual C++ 14.0 is required.
    【docker】命令学习
    【DJango项目】3.JWT验证
  • 原文地址:https://www.cnblogs.com/xiaobaizhiqian/p/7912069.html
Copyright © 2020-2023  润新知