一 JDBC链接

通常你希望SessionFactory来为你创建和缓存(pool)JDBC连接. 假设你採用这样的方式, 仅仅须要例如以下例所看到的那样,打开一个Session:

Session session = sessions.openSession(); // open a new Session

一旦你须要进行数据訪问时, 就会从连接池(connection pool)获得一个JDBC连接. 

为了使这样的方式工作起来, 我们须要向Hibernate传递一些JDBC连接的属性. 我们如今将描写叙述JDBC连接配置中最重要的设置. 

假设你设置例如以下属性。Hibernate将使用java.sql.DriverManager来获得(和缓存)JDBC连接 :

           Hibernate JDBC属性

但Hibernate自带的连接池算法相当不成熟. 它仅仅是为了让你快些上手,并不适合用于产品系统或性能測试中。 出于最佳性能和稳定性考虑你应该使用第三方的连接池。

仅仅须要用特定连接池的设置替换 hibernate.connection.pool_size就可以。这将关闭Hibernate自带的连接池. 比如, 你可能会想用C3P0. C3P0是一个随Hibernate一同分发的开源的JDBC连接池, 它位于lib文件夹下。 假设你设置了hibernate.c3p0.*相关的属性, Hibernate将使用 C3P0ConnectionProvider来缓存JDBC连接. 假设你更原意使用Proxool, 请參考发 行包中的hibernate.properties并到Hibernate站点获取很多其它的信息.

二 可选的配置属性

有大量属性能用来控制Hibernate在执行期的行为. 它们都是可选的, 并拥有适当的默认值.

Hibernate配置属性 

三 SQL方言

你应当总是为你的数据库将hibernate.dialect属性设置成正确的 org.hibernate.dialect.Dialect子类. 假设你指定一种方言, Hibernate将为上面列出的一些属性使用合理的默认值, 为你省去了手工指定它们的功夫.

Hibernate SQL方言 (hibernate.dialect)

四  XML配置文件

还有一个配置方法是在hibernate.cfg.xml文件里指定一套完整的配置. 这个文件能够当成hibernate.properties的替代。

若两个文件同一时候存在。它将覆盖前者的属性. 

XML配置文件被默认是放在CLASSPATH的根文件夹下. 这是一个样例:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <!-- 以/jndi/name绑定到JNDI的SessionFactory实例 -->
<session-factory
name="java:hibernate/SessionFactory"> <!-- 属性 -->
<property name="connection.datasource">java:/comp/env/jdbc/MyDB</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">false</property>
<property name="transaction.factory_class">
org.hibernate.transaction.JTATransactionFactory
</property>
<property name="jta.UserTransaction">java:comp/UserTransaction</property> <!-- 映射定义文件 -->
<mapping resource="org/hibernate/auction/Item.hbm.xml"/>
<mapping resource="org/hibernate/auction/Bid.hbm.xml"/> <!-- 缓存设置 -->
<class-cache class="org.hibernate.auction.Item" usage="read-write"/>
<class-cache class="org.hibernate.auction.Bid" usage="read-only"/>
<collection-cache collection="org.hibernate.auction.Item.bids" usage="read-write"/> </session-factory> </hibernate-configuration>

如你所见, 这种方法优势在于,在配置文件里指出了映射定义文件的名字. 一旦你须要调整Hibernate的缓存, hibernate.cfg.xml也是更方便. 注意,使用hibernate.properties还是 hibernate.cfg.xml全然是由你来决定, 除了上面提到的XML语法的优势之外, 两者是等价的. 

使用XML配置,使得启动Hibernate变的异常简单, 例如以下所看到的,一行代码就能够搞定:

SessionFactory sf = new Configuration().configure().buildSessionFactory();

你能够使用例如以下代码来加入一个不同的XML配置文件

SessionFactory sf = new Configuration()
.configure("catdb.cfg.xml")
.buildSessionFactory();

[Hibernate开发之路](3)基础配置的更多相关文章

  1. Java开发学习(三)----Bean基础配置及其作用范围

    一.bean基础配置 对于bean的基础配置如下 <bean id="" class=""/> 其中,bean标签的功能.使用方式以及id和clas ...

  2. [Hibernate开发之路](4)ID生成策略

    一 对象关系数据库映射之Id 被映射的类必须定义相应数据库表主键字段.大多数类有一个JavaBeans风格的属性, 为每个实例包括唯一的标识. <id> 元素定义了该属性到数据库表主键字段 ...

  3. Stardew Valley(星露谷物语)Mod开发之路 1环境配置

    首先来说明一下,我写这个章节本身也是对学习过程的记录,主要参考了http://canimod.com/guides/creating-a-smapi-mod中的内容.也推荐大家看看. *这些是我的开发 ...

  4. [Hibernate开发之路](2)Hibernate问题

    (1)数据库驱动问题 log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment). log4j: ...

  5. Hibernate 基础配置及常用功能(三)

    本章重点讲述Hibernate对象的三种状态以及如何配置二级缓存 有关Hibernate的三种状态如何相互转换网上都能查到,官方文档描述的也比较详细.这里主要是针对几个重点方法做代码演示. 一.状态转 ...

  6. Hibernate学习笔记2.1(Hibernate基础配置)

    Hibernate基础配置 1.<property name="hbm2ddl.auto">update</property> 在SessionFactor ...

  7. WEB开发之路——基础部分

    WEB开发之路 受BBC的<BBC: Brain Story>和<BBC: The Brain - A Secret History>的影响,我一直有志于探究人类大脑,2015 ...

  8. 前端基于react,后端基于.net core2.0的开发之路(2) 开发环境的配置,注意事项,后端数据初始化

    前端环境配置 项目介绍文章:前端基于react,后端基于.net core2.0的开发之路(1) 介绍 1.VSCode安装 下载地址:https://code.visualstudio.com/Do ...

  9. python 小白(无编程基础,无计算机基础)的开发之路 day1

    本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...

随机推荐

  1. Oracle 了解 DDL 操作与 REDO 的关系

    目录 了解 DDL 操作与 REDO 的关系 DDL是否会产生REDO 通过 10046 trace 来分析create 和drop 如果drop失败,redo的变化 了解 DDL 操作与 REDO ...

  2. 理一理Spring如何对接JUnit

    测试代码 package org.simonme.srcstudy.spring3.demo.stub; import static org.junit.Assert.assertNotNull; i ...

  3. cinema 4d 包括宝典 --- 改线 循环边 建模布线原则

    cinema 4d 一.视图控制与物体控制 1.摇移      alt+鼠标左键   转圈看物体  改变角度 2.平移  alt +鼠标中键      不改变角度  移动 3.推拉  alt+鼠标右键 ...

  4. Leetcode 473.火柴拼正方形

    火柴拼正方形 还记得童话<卖火柴的小女孩>吗?现在,你知道小女孩有多少根火柴,请找出一种能使用所有火柴拼成一个正方形的方法.不能折断火柴,可以把火柴连接起来,并且每根火柴都要用到. 输入为 ...

  5. spring AOP详解三

    CGLib采用非常底层的字节码技术,可以为一个类创建子类,并在子类中采用方法拦截的结束拦截所有父类方法的调用,并顺势织入横切逻辑.我们采用CGLib技术可以编写一个可以为任何类创建织入横切逻辑代理对象 ...

  6. kb-07-RMQ线段树--07(动态规划)

    RMQ是一类解决区间最值查询的算法的通称:.一共有四类:在代码中有说明: 下面是ST算法,就是动态规划做法: 来看一下ST算法是怎么实现的(以最大值为例): 首先是预处理,用一个DP解决.设a是要求区 ...

  7. 国外12家值得注意的SD-WAN厂商

    国外12家值得注意的SD-WAN厂商 来源 https://www.sdnlab.com/18611.html 在网络行业,围绕软件定义网络的炒作似乎已经殆尽,但业界普遍对软件定义广域网(SD-WAN ...

  8. poj 4438 Hunters

    Hunters Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  9. 【HDU4372】Count the Buildings (第一类斯特林数)

    Description $N$座高楼,高度均不同且为$1~N$中的数,从前向后看能看到$F$个,从后向前看能看到$B$个,问有多少种可能的排列数. $T$组询问,答案模$1000000007$.其中$ ...

  10. 【Codevs1993】草地排水(最大流,Dinic)

    题意:在农夫约翰的农场上,每逢下雨,Bessie最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫约翰修建了一套排水系统来使贝茜的草地免除被大水 ...