hibernate配置文档_yuanyuan_186的博客-程序员秘密


http://wenku.baidu.com/link?url=WYBBeSSYuRYa_Zr4y29CphRDCEhj0WgIpX0apvWlumXZkl5ZYuEKZB2drkAsnNaLF22FqZo1C6245kcwHce8EPaCx2yAyfNV32wqulQ63ni

由于 Hibernate 是为了能在各种不同环境下工作而设计的,因此存在着大量的配置参数。幸运的是多数配置参数都有比较直观的默认值,并有随 Hibernate 一同分发的配置样例 hibernate.properties(位于

etc/)来展示各种配置选项。所需做的仅仅是将这个样例文件复制到类路径(classpath)下并进行定制。
3.1. 可编程的配置方式
org.hibernate.cfg.Configuration 实例代表了一个应用程序中 Java 类型到SQL数据库映射的完整集合。org.hibernate.cfg.Configuration 被用来构建一个(不可变的(immutable))org.hibernate.SessionFactory。
映射定义则由不同的 XML 映射定义文件编译而来。
你可以直接实例化 org.hibernate.cfg.Configuration 来获取一个实例,并为它指定 XML 映射定义文件。如果映射定义文件在类路径(classpath)中,请使用 addResource()。例如:
Configuration cfg = new Configuration()     .addResource("Item.hbm.xml")     .addResource("Bid.hbm.xml");
一个替代方法(有时是更好的选择)是,指定被映射的类,让 Hibernate 帮你寻找映射定义文件:  
Configuration cfg = new Configuration()
    .addClass(org.hibernate.auction.Item.class)     .addClass(org.hibernate.auction.Bid.class);
Hibernate 将会在类路径(classpath)中寻找名字为 /org/hibernate/auction/Item.hbm.xml 和
/org/hibernate/auction/Bid.hbm.xml 映射定义文件。这种方式消除了任何对文件名的硬编码
(hardcoded)。
org.hibernate.cfg.Configuration > 也允许你指定配置属性。例如:
Configuration cfg = new Configuration()
    .addClass(org.hibernate.auction.Item.class)     .addClass(org.hibernate.auction.Bid.class)
    .setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLInnoDBDialect")     .setProperty("hibernate.connection.datasource", "java:comp/env/jdbc/test")     .setProperty("hibernate.order_updates", "true");


     五一长假除了旅游 还能做什么?  辅导补习  美容养颜  家庭家务  加班须知      
 


当然这不是唯一的传递 Hibernate 配置属性的方式,其他可选方式还包括:  
1. 传一个 java.util.Properties 实例给 Configuration.setProperties()。
2. 将 hibernate.properties 放置在类路径(classpath)的根目录下(root directory)。 3. 通过 java -Dproperty=value 来设置系统(System)属性。 4. 在 hibernate.cfg.xml 中加入元素 <property>(稍后讨论)。  
如果你想快速上路,hibernate.properties 就是最容易的途径。
org.hibernate.cfg.Configuration 实例被设计成启动期间(startup-time)对象,一旦 SessionFactory 创
建完成它就被丢弃了。
3.2. 获得 SessionFactory
当所有映射定义被 org.hibernate.cfg.Configuration 解析后,应用程序必须获得一个用于构造
org.hibernate.Session 实例的工厂。这个工厂将被应用程序的所有线程共享:
SessionFactory sessions = cfg.buildSessionFactory();
Hibernate 允许你的应用程序创建多个 org.hibernate.SessionFactory 实例。这对 使用多个数据库的应用来说很有用。
3.3. JDBC 连接
通常你希望 org.hibernate.SessionFactory 来为你创建和缓存(pool)JDBC 连接。如果你采用这种方式,只需要如下例所示那样,打开一个 org.hibernate.Session:
Session session = sessions.openSession(); // open a new Session
一旦你需要进行数据访问时,就会从连接池(connection pool)获得一个 JDBC 连接。  
为了使这种方式工作起来,我们需要向 Hibernate 传递一些 JDBC 连接的属性。所有 Hibernate 属性的名字和语义都在 org.hibernate.cfg.Environment 中定义。我们现在将描述 JDBC 连接配置中最重要的设置。



 


如果你设置如下属性,Hibernate 将使用 java.sql.DriverManager 来获得(和缓存)JDBC 连接:
表 3.1. Hibernate JDBC 属性
属性名
用途
hibernate.connection.driver_class JDBC driver class hibernate.connection.url JDBC URL hibernate.connection.username database user
hibernate.connection.password 数据库用户密码
hibernate.connection.pool_size maximum number of pooled connections
 
但 Hibernate 自带的连接池算法相当不成熟。它只是为了让你快些上手,并不适合用于产品系统或性能测试中。 出于最佳性能和稳定性考虑你应该使用第三方的连接池。只需要用特定连接池的设置替换
hibernate.connection.pool_size 即可。这将关闭 Hibernate 自带的连接池。例如,你可能会想用 C3P0。  
C3P0 是一个随 Hibernate 一同分发的开源的 JDBC 连接池,它位于 lib目录下。 如果你设置了
hibernate.c3p0.* 相关的属性,Hibernate将使用 C3P0ConnectionProvider 来缓存 JDBC 连接。如果
你更原意使用 Proxool,请参考发行包中的 hibernate.properties 并到 Hibernate 网站获取更多的信息。  
这是一个使用 C3P0 的 hibernate.properties 样例文件:  
hibernate.connection.driver_class = org.postgresql.Driver
hibernate.connection.url = jdbc:postgresql://localhost/mydatabase hibernate.connection.username = myuser hibernate.connection.password = secret hibernate.c3p0.min_size=5 hibernate.c3p0.max_size=20 hibernate.c3p0.timeout=1800 hibernate.c3p0.max_statements=50
hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
为了能在应用程序服务器(application server)中使用 Hibernate,应当总是将 Hibernate 配置成从注册在 JNDI 中的 Datasource 处获得连接,你至少需要设置下列属性中的一个:  



 


表 3.2. Hibernate 数据源属性
属性名
用途
hibernate.connection.datasource 数据源 JNDI 名字
hibernate.jndi.url JNDI 提供者的 URL(可选)
hibernate.jndi.class
JNDI InitialContextFactory 类(可选)
hibernate.connection.username 数据库用户(可选) hibernate.connection.password 数据库密码(可选)
 
这是一个使用应用程序服务器提供的 JNDI 数据源的 hibernate.properties 样例文件:  
hibernate.connection.datasource = java:/comp/env/jdbc/test hibernate.transaction.factory_class = \
    org.hibernate.transaction.JTATransactionFactory hibernate.transaction.manager_lookup_class = \
    org.hibernate.transaction.JBossTransactionManagerLookup hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
从 JNDI 数据源获得的 JDBC 连接将自动参与到应用程序服务器中容器管理的事务(container-managed transactions)中去。
任何连接(connection)属性的属性名都要以 "hibernate.connnection" 开头。例如,你可能会使用
hibernate.connection.charSet 来指定 charSet 连接属性。  
通过实现 org.hibernate.connection.ConnectionProvider 接口,你可以定义属于你自己的获得JDBC连接的插件策略。通过设置hibernate.connection.provider_class,你可以选择一个自定义的实现。  
3.4. 可选的配置属性
有大量属性能用来控制 Hibernate 在运行期的行为。它们都是可选的,并拥有适当的默认值。  
警告



 


其中一些属性是"系统级(system-level)的"。系统级属性只能通过java -Dproperty=value 或
hibernate.properties 来设置,而不能用上面描述的其他方法来设置。
表 3.3. Hibernate 配置属性
属性名 用途
hibernate.dialect
允许 Hibernate 针对特定的关系数据库生成优化的 SQL 的 org.hibernate.dialect.Dialect 的类名。  
例如:full.classname.of.Dialect  
在大多数情况下,Hibernate 可以根据 JDBC 驱动返回的
 
JDBC
metadata
选择正确的
org.hibernate.dialect.Dialect 实现。  
hibernate.show_sql
输出所有 SQL 语句到控制台。有一个另外的选择是把
org.hibernate.SQL 这个 log category设为 debug。  
例如:true | false  
hibernate.format_sql
在 log 和 console 中打印出更漂亮的 SQL。  
例如:true | false  
hibernate.default_schema
在生成的 SQL 中,将给定的 schema/tablespace 附加
于非全限定名的表名上。  
例如:SCHEMA_NAME  
hibernate.default_catalog
在生成的 SQL 中,将给定的 catalog 附加于非全限定名
的表名上。  
例如:CATALOG_NAME  
hibernate.session_factory_name
org.hibernate.SessionFactory 创建后,将自动使用这个名
字绑定到 JNDI 中。  



 





 





 





 





 





 





 





 





 





 





 





 





 





 





 





 





 





 





 





 





 
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yuanyuan_186/article/details/24792481

智能推荐

初学者学Java常遇到的问题,我都给你回答了!_ZYQZXF的博客-程序员秘密

本文非常适合零基础初学者观看如果别人让我介绍我是做什么工作内容的,我可能会用以下的方式告诉他(不知道学Java可以干些什么,可能就不知道下面的流程是怎么样的):“你可以掏出手机,打开微信”“我们都是玩微信的人,要进入微信先得有个账户,所以要先注册““注册实际上就是把你的账号和密码「保存」起来”。“如果你注册成功了,那小本本「数据库」就有你的账号和密码了。等你登录的时候,就去小本本...

ESLint + commitlint 实现代码提交检验与规范commit提交内容_lidix的博客-程序员秘密_eslint cimmit类型

ESLint + commitlint 实现代码提交检验与规范commit提交内容实现的功能git commit 之前对代码进行格式校验并自动修复存在基础错误的代码规范 git commit -m “xxxx” 提交的描述内容git commit 之前对代码进行格式校验并自动修复存在基础错误的代码安装eslint包关于eslint的说明和安装这里不再说明。详情可百度或查看另一边文章。eslint配置和保存代码自动格式化安装husky包yarn add husky -Dhusky

【C++】基于 OpenCV 的人脸识别_tuuzhang的博客-程序员秘密

原文链接:http://blog.csdn.net/u013346007/article/details/50569626一点背景知识OpenCV 是一个开源的计算机视觉和机器学习库。它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包。根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从谷歌街景的图片拼接,到交互艺术展览的技术实现中,都有 OpenCV

Python 办公自动化之 PDF 的详细操作(全)_IT农民工1的博客-程序员秘密

公众号后台回复“图书“,了解更多号主新书内容 作者:xiaoyi 来源:小一的学习笔记办公自动化应该算是打工人上班摸鱼的极致追求了,况且对于 Python 爱好者来说,办公...

unity多个物体共用材质,需要单独修改其中一个_养四只猫的猫叔的博客-程序员秘密_unity修改多个物体共用材质球

private void NewMethod(Image obj,float endValue, string name,float time) { Material mat = obj.GetComponent&lt;Image&gt;().material; mat = Instantiate(mat); obj.GetComponent&lt;Image&gt;().material = mat; mat.DOFloat...

随便推点

An ffmpeg and SDL Tutorial Tutorial 05: Synching Video_maikforever的博客-程序员秘密

Tutorial 05: Synching Video<br />Code: tutorial05.cHow Video Syncs<br />So this whole time, we've had an essentially useless movie player. I

CSS照片墙_舒ing的博客-程序员秘密

示例代码&lt;!DOCTYPE html&gt;&lt;html&gt; &lt;head&gt; &lt;meta charset="utf-8"&gt; &lt;title&gt;&lt;/title&gt; &lt;style type="text/css"&gt; *{ margin: 0; padding: 0; } .fl{ float: left; } .fr{ float: right; } ..

MFC:自绘标题栏,DefWindowProc的使用_Augusdi的博客-程序员秘密

标题栏的自绘是挺有用处的,这样可以美化程序,使自己的程序不那么千篇一律,算是美化界面中的一种。当然界面的美化,单靠自绘标题栏是不行的,不过,这可以算是一个开端。先说一下,自绘标题需要用到的几个函数:DefWindowProc,OnNcLButtonDown,OnNcMouseMove等。简单说明一下这三个函数的基本作用,DefWindowProc,默认的窗口处理函数,提供一些缺省处理,我们需要在其

Linux CentOS 8中配置阿里云的yum源_嘉禾嘉宁papa的博客-程序员秘密_centos8 阿里云yum源

一、检查yum安装二、备份yum配置文件三、下载yum源配置文件四、修改yum源配置文件五、更新yum源配置文件结语

android重力监听_kevin . zhang的博客-程序员秘密_android 重力监听

package com.PinusBungeana.shipin;import android.app.Activity;import android.os.Bundle;import android.support.annotation.Nullable;import android.view.OrientationEventListener;import android.view....

不想提孙杨,斗胆说下移民吧_小北哥哥和北妈的博客-程序员秘密

文/北妈阅读本文需要2.8分钟今天说两个羊的事。一个是孙杨禁赛,另一个是一个姓杨的要让外国人,主要是黑人,进来我国永久移民的事。一不受教育的人,因为不识字,上人的当;受教育的人,因为识...