一、配置数据库连接池
  1、使用默认的数据库连接池
    Hibernate提供了默认了数据库连接池,它的实现类为DriverManegerConnectionProvider,如果在Hibernate的配置文件中没有明确配置任何连接池,Hibernate就会使用这个默认的连接池。
    注意:在开发正式的商业软件产品时,不能使用这个连接池,因为它不是成熟的专业连接池产品,缺乏响应大批量并发请求及荣错的能力。
  2、使用配置文件指定的数据库连接池
    hibernate.properties配置C3P0连接池的实例代码:

hibernate.c3p0.min_size=5
hibernate.c3p0.max_size=20
hibernate.c3p0.timeout=300
hibernate.c3p0.max_statements=50
hibernate.c3p0.idle_test_period=3000

    c3p0的配置选项:

配置选项 描述
min_size 在连接池中可用的数据库连接的最少数目
max_size 在连接池中可用的数据库连接的最大数目
timeout 设定数据库连接的过期时间,以秒为单位。如果连接池中的某个数据库连接处于空闲状态的时间超过timeout时间,就会从连接池中清除。
max_statements 可以被缓存的PreparedStatement实例的最大数目。缓存适量的PreparedStatement实例,能够大大提高Hibernate的性能。
idle_test_period 在使数据库连接自动生效之前处于空闲状态的时间,以秒为单位。

    不同的连接池有不同的配置选项,在org.hibernate.cfg.Enviroment类的JavaDoc文档中,描述了当前Hibernate支撑的各种连接池的配置选项。
    如果使用用户提供的其他类型的连接池,首先要为这个连接池创建ConnectionProvider实现类,然后在配置文件中的hibernate.connection.provider_class=xxx显式指定。
  3、从容器中获取数据源
    在受管理环境中,容器负责构造数据源,即javax.sql.DataSource实例,然后发布为JNDI资源。
    在不受管理的环境中,有些Servlet容器,如tomcat,也能负责构造数据源,并发布weJNDI资源。
    以tomcat为例,配置分为两步:
    A、在tomcat的server.xml中增加配置:

<Resuorce name="jdbc/SAMPLEDB"
  auth="Container/Application"
  type="javax.sql.DataSource"
  maxActive="100"
  maxIdle="30"
  maxWait="10000"
  username="root"
  password="1234"
  driverClassName="com.mysql.jdbc.Driver"
  url="jdbc:mysql://localhost:3306/SAMPLEDB?autoReconnect=true"/>

    B、在hibernate.properties中配置:

hibernate.connection.datasource=java:comp/env/jdbc/SAMPLEDB

  4、有Java应用本身提供数据库连接
  使用SessionFactory.openSession(Connection conn);来实现。
  如果Session使用的是Java应用提供的Connection实例,那么Hibernate的二级缓存就会失效,Hibernate不能对同一个数据库事务执行的多条SQL语句进行跟踪。

二、配置事务类型:暂不做理解。
三、把SessionFactory与JNDI绑定:暂不做理解。
四、配置日志:暂不做笔记。
五、使用XML格式的配置文件
  在hibernate.cfg.xml中配置,实例代码:

<?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>
<session-factory >
<property name="dialect">
  org.hibernate.dialect.MySQLDialect
</property>
<property name="connection.driver_class">
  com.mysql.jdbc.Driver
</property>
<property name="connection.url">
  jdbc:mysql://localhost:3306/sampledb
</property>
<property name="connection.username">
  root
</property>
<property name="connection.password">
1234
</property> <property name="show_sql">true</property> <property name="use_sql_comments">
  true
</property> <mapping resource="mypack/Customer.hbm.xml" />
<mapping resource="mypack/Order.hbm.xml" />
</session-factory>
</hibernate-configuration>

攻城狮在路上(壹) Hibernate(十五)--- Hibernate的高级配置的更多相关文章

  1. 攻城狮在路上(壹) Hibernate(十八)--- 管理Hibernate的缓存

    一般Session的缓存被称为Hibernate的第一级缓存,SessionFactory的外置缓存是一个可配置的缓存插件,称为Hibernate的第二级缓存.一.缓存的基本原理: 1.持久化层的缓存 ...

  2. 攻城狮在路上(壹) Hibernate(十六)--- Hibernate声明数据库事务

    一.数据库事务的概念: 数据库的ACID特征:Atomic.Consistency.Isolation.Durability.原子性.一致性.隔离性.持久性.不同的隔离级别引发的不同问题. 事务的AC ...

  3. 攻城狮在路上(壹) Hibernate(九)--- Hibernate的映射类型

    Hibernate采用映射类型作为Java类型和SQL类型的桥梁,对应type属性.分为两种:内置映射类型和客户化映射类型.一.内置映射类型: 1.Java基本类型的Hibernate映射类型: Ja ...

  4. 攻城狮在路上(壹) Hibernate(七)--- 通过Hibernate操纵对象(下)

    一.与触发器协同工作: 当Hibernate与数据库的触发器协同工作时,会出现以下两类问题: 1.触发器使Session缓存中的数据和数据库中的不一致: 出现此问题的原因是触发器运行在数据库内,它执行 ...

  5. 攻城狮在路上(壹) Hibernate(二)--- 第一个hibernate程序

    1.直接通过JDBC API持久化实体域对象: A.java.sql常用接口和类: DriverManager:驱动程序管理器,负责创建数据库连接. Connection:代表数据库连接. State ...

  6. 攻城狮在路上(壹) Hibernate(十四)--- Hibernate的检索方式(下)

    本节介绍HQL和QBC的高级用法:各种连接查询.投影查询.报表查询.动态查询.集合过滤和子查询等.另外将归纳优化查询程序代码,从而提高查询性能的各种技巧.一.连接查询: HQL与QBC支持的各种连接类 ...

  7. 攻城狮在路上(壹) Hibernate(十二)--- Hibernate的检索策略

    本文依旧以Customer类和Order类进行说明.一.引言: Hibernate检索Customer对象时立即检索与之关联的Order对象,这种检索策略为立即检索策略.立即检索策略存在两大不足: A ...

  8. 攻城狮在路上(壹) Hibernate(十)--- 映射值类型集合

    一.映射Set(集):未排序,无重复. 实例代码: <set name="images" table="IMAGES" lazy="true&q ...

  9. 攻城狮在路上(壹) Hibernate(十三)--- Hibernate的检索方式(上)

    Hibernate提供了以下几种检索对象的方式: A.导航对象图检索方式. B.OID检索方式.Session.get() load(); C.HQL检索方式.Query. D.QBC检索方式.Que ...

随机推荐

  1. iOS关于UILabel 基本属性 背景图片 背景色

    [代码] iOS关于UILabel 基本属性 背景图片 背景色 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ...

  2. JustMock Lite (Free Mocking Framework For .net)

    通过 Nuget 安装 2.   官网下载(官网不行点这里) 3.   帮助文档 商业版和免费版区别概览 MockingContainer 测试类准备:一般来说也是业务类 public class C ...

  3. JavaScript——this关键字

    请看下面的代码,最后alert出来的是什么呢? 1 var name = "Bob"; 2 var nameObj ={ 3 name : "Tom", 4 s ...

  4. ASP.NET 页生命周期概述

    ASP.NET 页生命周期概述 Visual Studio 2005    ASP.NET 页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤.这些步骤包括初始化.实例化控件.还原和维 ...

  5. 设计算法,求AB两个整数集合的交集

    [本文链接] http://www.cnblogs.com/hellogiser/p/ab-set-intersection.html [分析] 思路1:排序法 对集合A和集合B进行排序(升序,用快排 ...

  6. VS2010工程文件减肥

    由于VS2010中新增加了sdf和ipch文件等浏览数据库来支持智能浏览感知编辑.显示类视图等,使得随便一个小工程就上百兆,很占用空间也不方便工程项目的打包备份.为了不使用数据库以减小VS2010中的 ...

  7. Android开发者必备的42个链接

    http://mobile.51cto.com/ahot-426035.htm Android开发者必备的42个链接 下面收集了42个帮助大家学习Android的内容链接,部分内容是面向初学者的,帮助 ...

  8. WIZnet官方网盘

    之前使用过 WIZnet 的TCP/IP 解决方案,资源较少, 偶然发现此网盘,不敢独享,访问 请戳此处.

  9. Effective C++ -----条款51:编写new 和delete 时需固守常规

    operator new 应该内含一个无穷循环,并在其中尝试分配内存,如果它无法满足内存需求,就该调用new-handler.它也应该有能力处理0 bytes 申请.Class专属版本则还应该处理“比 ...

  10. nyoj138 找球号(二)_离散化

    找球号(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:5   描述 在某一国度里流行着一种游戏.游戏规则为:现有一堆球中,每个球上都有一个整数编号i(0<=i< ...