• 25.Hibernate-配置文件.md



    目录

    1.主配置文件

    1.1定义

    1.1.1分类

    在hibernate的配置文件中,session-factory的配置下,分为三类

    • 连接配置:配置连接的参数
    • 其他配置:配置其他的需求,例如打印sql语句,自动建表
    • 映射配置:配置具体类的映射文件
      需要注意的是proterty字段需要在mapping字段之前

    Demo:

    
    <!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 name="foo">
            <!-- 数据库连接配置 -->
            <!-- 连接类 -->
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <!-- 连接数据库 -->
            <property name="hibernate.connection.url">jdbc:mysql:///hi</property>
            <!-- 连接用户名 -->
            <property name="hibernate.connection.username">root</property>
            <!-- 连接密码 -->
            <property name="hibernate.connection.password">root</property>
            <!-- 数据库方言 -->
            <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
            
            <!-- 其他配置 -->
            <property name="hibernate.show_sql"></property>
            <property name="hibernate.hbm2ddl.auto">create</property>
            
            
            <!-- 加载所有的映射 -->
            <mapping resource="per/liyue/code/hibernatehello/Employee.hbm.xml"/>
        </session-factory>
    </hibernate-configuration>  
    
    

    1.1.2分类

    其中在其他配置项中可以配置创建或者更新的属性:

    • hibernate.hbm2ddl.auto create-drop 每次在创建sessionFactory时候执行创建表;
      当调用sesisonFactory的close方法的时候,删除表!
    • hibernate.hbm2ddl.auto create 每次都重新建表; 如果表已经存在就先删除再创建
    • hibernate.hbm2ddl.auto update 如果表不存在就创建; 表存在就不创建;
    • hibernate.hbm2ddl.auto validate (生成环境时候) 执行验证: 当映射文件的内容与数据库表结构不一样的时候就报错!

    1.1.3不使用配置文件生成表

    在hibernate.cfg.xml中,可以设定属性为自动生成表,但是这种加载方式在调用配置文件的时候才会生效,如果要按需加载。则需要用代码手动来实现。

    <!-- 将下面配置语句注释 -->
    <property name="hibernate.hbm2ddl.auto">create</property>
    
    

    具体做法是在配置文件中注释自动生成的配置语句

    package per.liyue.code.hibernatehello;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.tool.hbm2ddl.SchemaExport;
    import org.junit.Test;
    public class AppMuanal {
        @Test
        public void CreateTableManual(){
            //创建配置对象
            Configuration con = new Configuration();
            
            //加载配置文件
            con.configure();
            
            //获取工具类来实现创建表
            SchemaExport schemaExport = new SchemaExport(con);
            /*
             * create的第一个参数表示是否显示sql语句
             * create的第二个参数表示是否创建表
             */        
            schemaExport.create(true, true);
            
        }
    }  
    
    

    1.2教程

    常用的配置在教程hibernate-distribution-3.6.0.Finalprojectetchibernate.properties中。下面是内容

    ######################
    ### Query Language ###
    ######################
    
    
    ## define query language constants / function names
    
    
    hibernate.query.substitutions yes 'Y', no 'N'
    
    
    
    
    ## select the classic query parser
    
    
    #hibernate.query.factory_class org.hibernate.hql.classic.ClassicQueryTranslatorFactory
    
    
    
    
    
    
    #################
    ### Platforms ###
    #################
    
    
    ## JNDI Datasource
    
    
    #hibernate.connection.datasource jdbc/test
    #hibernate.connection.username db2
    #hibernate.connection.password db2
    
    
    
    
    ## HypersonicSQL
    
    
    hibernate.dialect org.hibernate.dialect.HSQLDialect
    hibernate.connection.driver_class org.hsqldb.jdbcDriver
    hibernate.connection.username sa
    hibernate.connection.password
    hibernate.connection.url jdbc:hsqldb:./build/db/hsqldb/hibernate
    #hibernate.connection.url jdbc:hsqldb:hsql://localhost
    #hibernate.connection.url jdbc:hsqldb:test
    
    
    ## H2 (www.h2database.com)
    #hibernate.dialect org.hibernate.dialect.H2Dialect
    #hibernate.connection.driver_class org.h2.Driver
    #hibernate.connection.username sa
    #hibernate.connection.password
    #hibernate.connection.url jdbc:h2:mem:./build/db/h2/hibernate
    #hibernate.connection.url jdbc:h2:testdb/h2test
    #hibernate.connection.url jdbc:h2:mem:imdb1
    #hibernate.connection.url jdbc:h2:tcp://dbserv:8084/sample; 	
    #hibernate.connection.url jdbc:h2:ssl://secureserv:8085/sample; 	
    #hibernate.connection.url jdbc:h2:ssl://secureserv/testdb;cipher=AES
    
    
    ## MySQL
    
    
    #hibernate.dialect org.hibernate.dialect.MySQLDialect
    #hibernate.dialect org.hibernate.dialect.MySQLInnoDBDialect
    #hibernate.dialect org.hibernate.dialect.MySQLMyISAMDialect
    #hibernate.connection.driver_class com.mysql.jdbc.Driver
    #hibernate.connection.url jdbc:mysql:///test
    #hibernate.connection.username gavin
    #hibernate.connection.password
    
    
    
    
    ## Oracle
    
    
    #hibernate.dialect org.hibernate.dialect.Oracle8iDialect
    #hibernate.dialect org.hibernate.dialect.Oracle9iDialect
    #hibernate.dialect org.hibernate.dialect.Oracle10gDialect
    #hibernate.connection.driver_class oracle.jdbc.driver.OracleDriver
    #hibernate.connection.username ora
    #hibernate.connection.password ora
    #hibernate.connection.url jdbc:oracle:thin:@localhost:1521:orcl
    #hibernate.connection.url jdbc:oracle:thin:@localhost:1522:XE
    
    
    
    
    ## PostgreSQL
    
    
    #hibernate.dialect org.hibernate.dialect.PostgreSQLDialect
    #hibernate.connection.driver_class org.postgresql.Driver
    #hibernate.connection.url jdbc:postgresql:template1
    #hibernate.connection.username pg
    #hibernate.connection.password
    
    
    
    
    ## DB2
    
    
    #hibernate.dialect org.hibernate.dialect.DB2Dialect
    #hibernate.connection.driver_class com.ibm.db2.jcc.DB2Driver
    #hibernate.connection.driver_class COM.ibm.db2.jdbc.app.DB2Driver
    #hibernate.connection.url jdbc:db2://localhost:50000/somename
    #hibernate.connection.url jdbc:db2:somename
    #hibernate.connection.username db2
    #hibernate.connection.password db2
    
    
    ## TimesTen
    
    
    #hibernate.dialect org.hibernate.dialect.TimesTenDialect
    #hibernate.connection.driver_class com.timesten.jdbc.TimesTenDriver
    #hibernate.connection.url jdbc:timesten:direct:test
    #hibernate.connection.username
    #hibernate.connection.password 
    
    
    ## DB2/400
    
    
    #hibernate.dialect org.hibernate.dialect.DB2400Dialect
    #hibernate.connection.username user
    #hibernate.connection.password password
    
    
    ## Native driver
    #hibernate.connection.driver_class COM.ibm.db2.jdbc.app.DB2Driver
    #hibernate.connection.url jdbc:db2://systemname
    
    
    ## Toolbox driver
    #hibernate.connection.driver_class com.ibm.as400.access.AS400JDBCDriver
    #hibernate.connection.url jdbc:as400://systemname
    
    
    
    
    ## Derby (not supported!)
    
    
    #hibernate.dialect org.hibernate.dialect.DerbyDialect
    #hibernate.connection.driver_class org.apache.derby.jdbc.EmbeddedDriver
    #hibernate.connection.username
    #hibernate.connection.password
    #hibernate.connection.url jdbc:derby:build/db/derby/hibernate;create=true
    
    
    
    
    ## Sybase
    
    
    #hibernate.dialect org.hibernate.dialect.SybaseDialect
    #hibernate.connection.driver_class com.sybase.jdbc2.jdbc.SybDriver
    #hibernate.connection.username sa
    #hibernate.connection.password sasasa
    #hibernate.connection.url jdbc:sybase:Tds:co3061835-a:5000/tempdb
    
    
    
    
    ## Mckoi SQL
    
    
    #hibernate.dialect org.hibernate.dialect.MckoiDialect
    #hibernate.connection.driver_class com.mckoi.JDBCDriver
    #hibernate.connection.url jdbc:mckoi:///
    #hibernate.connection.url jdbc:mckoi:local://C:/mckoi1.0.3/db.conf
    #hibernate.connection.username admin
    #hibernate.connection.password nimda
    
    
    
    
    ## SAP DB
    
    
    #hibernate.dialect org.hibernate.dialect.SAPDBDialect
    #hibernate.connection.driver_class com.sap.dbtech.jdbc.DriverSapDB
    #hibernate.connection.url jdbc:sapdb://localhost/TST
    #hibernate.connection.username TEST
    #hibernate.connection.password TEST
    #hibernate.query.substitutions yes 'Y', no 'N'
    
    
    
    
    ## MS SQL Server
    
    
    #hibernate.dialect org.hibernate.dialect.SQLServerDialect
    #hibernate.connection.username sa
    #hibernate.connection.password sa
    
    
    ## JSQL Driver
    #hibernate.connection.driver_class com.jnetdirect.jsql.JSQLDriver
    #hibernate.connection.url jdbc:JSQLConnect://1E1/test
    
    
    ## JTURBO Driver
    #hibernate.connection.driver_class com.newatlanta.jturbo.driver.Driver
    #hibernate.connection.url jdbc:JTurbo://1E1:1433/test
    
    
    ## WebLogic Driver
    #hibernate.connection.driver_class weblogic.jdbc.mssqlserver4.Driver
    #hibernate.connection.url jdbc:weblogic:mssqlserver4:1E1:1433
    
    
    ## Microsoft Driver (not recommended!)
    #hibernate.connection.driver_class com.microsoft.jdbc.sqlserver.SQLServerDriver
    #hibernate.connection.url jdbc:microsoft:sqlserver://1E1;DatabaseName=test;SelectMethod=cursor
    
    
    ## The New Microsoft Driver 
    #hibernate.connection.driver_class com.microsoft.sqlserver.jdbc.SQLServerDriver
    #hibernate.connection.url jdbc:sqlserver://localhost
    
    
    ## jTDS (since version 0.9)
    #hibernate.connection.driver_class net.sourceforge.jtds.jdbc.Driver
    #hibernate.connection.url jdbc:jtds:sqlserver://1E1/test
    
    
    ## Interbase
    
    
    #hibernate.dialect org.hibernate.dialect.InterbaseDialect
    #hibernate.connection.username sysdba
    #hibernate.connection.password masterkey
    
    
    ## DO NOT specify hibernate.connection.sqlDialect
    
    
    ## InterClient
    
    
    #hibernate.connection.driver_class interbase.interclient.Driver
    #hibernate.connection.url jdbc:interbase://localhost:3060/C:/firebird/test.gdb
    
    
    ## Pure Java
    
    
    #hibernate.connection.driver_class org.firebirdsql.jdbc.FBDriver
    #hibernate.connection.url jdbc:firebirdsql:localhost/3050:/firebird/test.gdb
    
    
    
    
    ## Pointbase
    
    
    #hibernate.dialect org.hibernate.dialect.PointbaseDialect
    #hibernate.connection.driver_class com.pointbase.jdbc.jdbcUniversalDriver
    #hibernate.connection.url jdbc:pointbase:embedded:sample
    #hibernate.connection.username PBPUBLIC
    #hibernate.connection.password PBPUBLIC
    
    
    
    
    ## Ingres
    
    
    ## older versions (before Ingress 2006)
    
    
    #hibernate.dialect org.hibernate.dialect.IngresDialect
    #hibernate.connection.driver_class ca.edbc.jdbc.EdbcDriver
    #hibernate.connection.url jdbc:edbc://localhost:II7/database
    #hibernate.connection.username user
    #hibernate.connection.password password
    
    
    ## Ingres 2006 or later
    
    
    #hibernate.dialect org.hibernate.dialect.IngresDialect
    #hibernate.connection.driver_class com.ingres.jdbc.IngresDriver
    #hibernate.connection.url jdbc:ingres://localhost:II7/database;CURSOR=READONLY;auto=multi
    #hibernate.connection.username user
    #hibernate.connection.password password
    
    
    ## Mimer SQL
    
    
    #hibernate.dialect org.hibernate.dialect.MimerSQLDialect
    #hibernate.connection.driver_class com.mimer.jdbc.Driver
    #hibernate.connection.url jdbc:mimer:multi1
    #hibernate.connection.username hibernate
    #hibernate.connection.password hibernate
    
    
    
    
    ## InterSystems Cache
    
    
    #hibernate.dialect org.hibernate.dialect.Cache71Dialect
    #hibernate.connection.driver_class com.intersys.jdbc.CacheDriver
    #hibernate.connection.username _SYSTEM
    #hibernate.connection.password SYS
    #hibernate.connection.url jdbc:Cache://127.0.0.1:1972/HIBERNATE
    
    
    
    
    #################################
    ### Hibernate Connection Pool ###
    #################################
    
    
    hibernate.connection.pool_size 1
    
    
    
    
    
    
    ###########################
    ### C3P0 Connection Pool###
    ###########################
    
    
    #hibernate.c3p0.max_size 2
    #hibernate.c3p0.min_size 2
    #hibernate.c3p0.timeout 5000
    #hibernate.c3p0.max_statements 100
    #hibernate.c3p0.idle_test_period 3000
    #hibernate.c3p0.acquire_increment 2
    #hibernate.c3p0.validate false
    
    
    
    
    
    
    ##############################
    ### Proxool Connection Pool###
    ##############################
    
    
    ## Properties for external configuration of Proxool
    
    
    hibernate.proxool.pool_alias pool1
    
    
    ## Only need one of the following
    
    
    #hibernate.proxool.existing_pool true
    #hibernate.proxool.xml proxool.xml
    #hibernate.proxool.properties proxool.properties
    
    
    
    
    
    
    #################################
    ### Plugin ConnectionProvider ###
    #################################
    
    
    ## use a custom ConnectionProvider (if not set, Hibernate will choose a built-in ConnectionProvider using hueristics)
    
    
    #hibernate.connection.provider_class org.hibernate.connection.DriverManagerConnectionProvider
    #hibernate.connection.provider_class org.hibernate.connection.DatasourceConnectionProvider
    #hibernate.connection.provider_class org.hibernate.connection.C3P0ConnectionProvider
    #hibernate.connection.provider_class org.hibernate.connection.ProxoolConnectionProvider
    
    
    
    
    
    
    #######################
    ### Transaction API ###
    #######################
    
    
    ## Enable automatic flush during the JTA beforeCompletion() callback
    ## (This setting is relevant with or without the Transaction API)
    
    
    #hibernate.transaction.flush_before_completion
    
    
    
    
    ## Enable automatic session close at the end of transaction
    ## (This setting is relevant with or without the Transaction API)
    
    
    #hibernate.transaction.auto_close_session
    
    
    
    
    ## the Transaction API abstracts application code from the underlying JTA or JDBC transactions
    
    
    #hibernate.transaction.factory_class org.hibernate.transaction.JTATransactionFactory
    #hibernate.transaction.factory_class org.hibernate.transaction.JDBCTransactionFactory
    
    
    
    
    ## to use JTATransactionFactory, Hibernate must be able to locate the UserTransaction in JNDI
    ## default is java:comp/UserTransaction
    ## you do NOT need this setting if you specify hibernate.transaction.manager_lookup_class
    
    
    #jta.UserTransaction jta/usertransaction
    #jta.UserTransaction javax.transaction.UserTransaction
    #jta.UserTransaction UserTransaction
    
    
    
    
    ## to use the second-level cache with JTA, Hibernate must be able to obtain the JTA TransactionManager
    
    
    #hibernate.transaction.manager_lookup_class org.hibernate.transaction.JBossTransactionManagerLookup
    #hibernate.transaction.manager_lookup_class org.hibernate.transaction.WeblogicTransactionManagerLookup
    #hibernate.transaction.manager_lookup_class org.hibernate.transaction.WebSphereTransactionManagerLookup
    #hibernate.transaction.manager_lookup_class org.hibernate.transaction.OrionTransactionManagerLookup
    #hibernate.transaction.manager_lookup_class org.hibernate.transaction.ResinTransactionManagerLookup
    
    
    
    
    
    
    ##############################
    ### Miscellaneous Settings ###
    ##############################
    
    
    ## print all generated SQL to the console
    
    
    #hibernate.show_sql true
    
    
    
    
    ## format SQL in log and console
    
    
    hibernate.format_sql true
    
    
    
    
    ## add comments to the generated SQL
    
    
    #hibernate.use_sql_comments true
    
    
    
    
    ## generate statistics
    
    
    #hibernate.generate_statistics true
    
    
    
    
    ## auto schema export
    
    
    #hibernate.hbm2ddl.auto create-drop
    #hibernate.hbm2ddl.auto create
    #hibernate.hbm2ddl.auto update
    #hibernate.hbm2ddl.auto validate
    
    
    
    
    ## specify a default schema and catalog for unqualified tablenames
    
    
    #hibernate.default_schema test
    #hibernate.default_catalog test
    
    
    
    
    ## enable ordering of SQL UPDATEs by primary key
    
    
    #hibernate.order_updates true
    
    
    
    
    ## set the maximum depth of the outer join fetch tree
    
    
    hibernate.max_fetch_depth 1
    
    
    
    
    ## set the default batch size for batch fetching
    
    
    #hibernate.default_batch_fetch_size 8
    
    
    
    
    ## rollback generated identifier values of deleted entities to default values
    
    
    #hibernate.use_identifer_rollback true
    
    
    
    
    ## enable bytecode reflection optimizer (disabled by default)
    
    
    #hibernate.bytecode.use_reflection_optimizer true
    
    
    
    
    
    
    #####################
    ### JDBC Settings ###
    #####################
    
    
    ## specify a JDBC isolation level
    
    
    #hibernate.connection.isolation 4
    
    
    
    
    ## enable JDBC autocommit (not recommended!)
    
    
    #hibernate.connection.autocommit true
    
    
    
    
    ## set the JDBC fetch size
    
    
    #hibernate.jdbc.fetch_size 25
    
    
    
    
    ## set the maximum JDBC 2 batch size (a nonzero value enables batching)
    
    
    #hibernate.jdbc.batch_size 5
    #hibernate.jdbc.batch_size 0
    
    
    
    
    ## enable batch updates even for versioned data
    
    
    hibernate.jdbc.batch_versioned_data true
    
    
    
    
    ## enable use of JDBC 2 scrollable ResultSets (specifying a Dialect will cause Hibernate to use a sensible default)
    
    
    #hibernate.jdbc.use_scrollable_resultset true
    
    
    
    
    ## use streams when writing binary types to / from JDBC
    
    
    hibernate.jdbc.use_streams_for_binary true
    
    
    
    
    ## use JDBC 3 PreparedStatement.getGeneratedKeys() to get the identifier of an inserted row
    
    
    #hibernate.jdbc.use_get_generated_keys false
    
    
    
    
    ## choose a custom JDBC batcher
    
    
    # hibernate.jdbc.factory_class
    
    
    
    
    ## enable JDBC result set column alias caching 
    ## (minor performance enhancement for broken JDBC drivers)
    
    
    # hibernate.jdbc.wrap_result_sets
    
    
    
    
    ## choose a custom SQL exception converter
    
    
    #hibernate.jdbc.sql_exception_converter
    
    
    
    
    
    
    ##########################
    ### Second-level Cache ###
    ##########################
    
    
    ## optimize chache for minimal "puts" instead of minimal "gets" (good for clustered cache)
    
    
    #hibernate.cache.use_minimal_puts true
    
    
    
    
    ## set a prefix for cache region names
    
    
    hibernate.cache.region_prefix hibernate.test
    
    
    
    
    ## disable the second-level cache
    
    
    #hibernate.cache.use_second_level_cache false
    
    
    
    
    ## enable the query cache
    
    
    #hibernate.cache.use_query_cache true
    
    
    
    
    ## store the second-level cache entries in a more human-friendly format
    
    
    #hibernate.cache.use_structured_entries true
    
    
    
    
    ## choose a cache implementation
    
    
    #hibernate.cache.provider_class org.hibernate.cache.EhCacheProvider
    #hibernate.cache.provider_class org.hibernate.cache.EmptyCacheProvider
    hibernate.cache.provider_class org.hibernate.cache.HashtableCacheProvider
    #hibernate.cache.provider_class org.hibernate.cache.TreeCacheProvider
    #hibernate.cache.provider_class org.hibernate.cache.OSCacheProvider
    #hibernate.cache.provider_class org.hibernate.cache.SwarmCacheProvider
    
    
    
    
    ## choose a custom query cache implementation
    
    
    #hibernate.cache.query_cache_factory
    
    
    
    
    
    
    ############
    ### JNDI ###
    ############
    
    
    ## specify a JNDI name for the SessionFactory
    
    
    #hibernate.session_factory_name hibernate/session_factory
    
    
    
    
    ## Hibernate uses JNDI to bind a name to a SessionFactory and to look up the JTA UserTransaction;
    ## if hibernate.jndi.* are not specified, Hibernate will use the default InitialContext() which
    ## is the best approach in an application server
    
    
    #file system
    #hibernate.jndi.class com.sun.jndi.fscontext.RefFSContextFactory
    #hibernate.jndi.url file:/
    
    
    #WebSphere
    #hibernate.jndi.class com.ibm.websphere.naming.WsnInitialContextFactory
    #hibernate.jndi.url iiop://localhost:900/
    
    
    

    2. 映射配置文件

  • 相关阅读:
    Access 通用访问类 OleDbHelper
    让Visual Studio 也支持JS代码折叠 [ Visual Studio | #region | #endregion ]
    提高网站性能的方法
    php 正则表达式整理 归纳 重点
    C++数据结构知识点
    algorithm算法设计,数据结构基本概念之我的归纳 by whb_咸菜圣斗士啊斌斌斌斌
    浏览器兼容性问题及常见的解决方法
    js抽象方法的使用
    js制作图片轮换切换
    C语言排序算法总结
  • 原文地址:https://www.cnblogs.com/bugstar/p/8512835.html
Copyright © 2020-2023  润新知