Hibernate(五):Hibernate配置文件及C3P0的用法
- 配置文件可配项:
参考文档:hibernate-release-5.2.9.Final/documentation/userguide/html_single/Hibernate_User_Guide.html
1)Hibernate配置文件主要用于配置数据库连接和Hibernate运行时所需要的各种属性。
hibernate.cfg.xml常用的属性:
- <?xml version="1.0" encoding="UTF-8"?>
- <!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>
- <property name="hibernate.connection.username">root</property>
- <property name="hibernate.connection.password">123456</property>
- <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
- <property name="hibernate.connection.url">jdbc:mysql://localhost/hibernate_01</property>
- <!-- <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
- <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property> -->
- <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
- <property name="hibernate.show_sql">true</property>
- <property name="hibernate.format_sql">true</property>
- <property name="hibernate.hbm2ddl.auto">update</property>
- <property name="hibernate.current_session_context_class">thread</property>
- <mapping resource="com/dx/hibernate5/test/News.hbm.xml" />
- <mapping class="com.dx.hibernate5.test.News" />
- </session-factory>
- </hibernate-configuration>
2)每个Hibernate配置文件对应一个Hibernate Configuration类对象。
3)配置Hibernate配置文件可以有两种格式:
hibernate.properties
hibernate.cfg.xml(推荐使用这种配置方式)
- 使用Hibernate的“C3P0”管理“数据库连接池”
1)C3P0数据库连接池属性
// 数据库连接池的最大连接数
hibernate.c3p0.max_size
// 数据库连接池的最大连接数
hibernate.c3p0.min_size
// 数据库连接池中连接对象在多长时间没有使用过后,就应该被销毁
hibernate.c3p0.timeout
// 缓存Statement对象的数量
hibernate.c3p0.max_statements
// 表示连接池检测线程多长时间检测一次线程池内的所有连接对象是否超时。
// 连接池本身不会把自己从连接池中移除,而是专门有一个线程按照一定的时间间隔来做这个事情。
// 这个线程通过比较连接对象最后一次被使用时间和当前时间的时间差来和timeout做对比,进而决定是否销毁这个连接对象。
hibernate.c3p0.max_idle_test_period
// 当数据库连接池中的连接耗尽时,同一时刻获取多少个新的数据连接。
hibernate.c3p0.accquire.increment
示例:
- <?xml version="1.0" encoding="UTF-8"?>
- <!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>
- <!--other settings-->
- 。。。
- <property name="hibernate.c3p0.max_size">500</property>
- <property name="hibernate.c3p0.min_size">20</property>
- <property name="hibernate.c3p0.max_statements">10</property>
- <property name="hibernate.c3p0.timeout">2000</property>
- <property name="hibernate.c3p0.idle_test_period">2000</property>
- <property name="hibernate.c3p0.acquire_increment">10</property>
- <mapping resource="com/dx/hibernate5/test/News.hbm.xml" />
- <mapping class="com.dx.hibernate5.test.News" />
- </session-factory>
- </hibernate-configuration>
2)导入c3p0需要的jar包
下载后解压的开发包路径中\hibernate-release-5.2.9.Final\lib\optional\c3p0下jar包导入进工程即可。
3)代码测试:
- package com.dx.hibernate5.test;
- import java.sql.Connection;
- import java.sql.SQLException;
- import java.util.Date;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.Transaction;
- import org.hibernate.boot.Metadata;
- import org.hibernate.boot.MetadataSources;
- import org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl;
- import org.hibernate.boot.registry.StandardServiceRegistry;
- import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
- import org.hibernate.jdbc.Work;
- public class HelloWord {
- public static void main(String[] args) {
- // 1、创建一个SessionFactory对象
- // 但是如果你使用Hibernate5的版本,就会报错。那么Hibernate5应该怎样构建SessionFactory呢,如下:
- // 和V4版本比,V5版本看不到configure对象了。直接使用创建者模式构建出了标准服务注册对象
- StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder().configure().build();
- // 这个对象metadata对象应该扮演了一个万金油的角色,使用以上的注册对象作为入参构建这个对象
- Metadata metadata = new MetadataSources(standardRegistry).getMetadataBuilder()
- .applyImplicitNamingStrategy(ImplicitNamingStrategyComponentPathImpl.INSTANCE).build();
- // 最后由这个metadata使用构建出sessionFactory
- SessionFactory sessionFactory = metadata.getSessionFactoryBuilder().build();
- // 2、创建一个Session对象
- Session session = sessionFactory.getCurrentSession();
- // 3、开启事物
- Transaction transaction = session.beginTransaction();
- // 4、查看connection对象类型是否为c3p0
- session.doWork(new Work() {
- @Override
- public void execute(Connection connection) throws SQLException {
- // TODO Auto-generated method stub
- System.out.println(connection);
- }
- });
- // 5、提交事物
- transaction.commit();
- // 6、关闭Session对象
- session.close();
- // 7、关闭SessionFactory对象
- sessionFactory.close();
- System.out.println("Complete...");
- }
- }
打印结果:
- com.mchange.v2.c3p0.impl.NewProxyConnection@58a55449 [wrapping: com.mysql.jdbc.JDBC4Connection@7a676440]
Hibernate(五):Hibernate配置文件及C3P0的用法的更多相关文章
- hibernate(五) hibernate一对一关系映射详解
序言 之前讲解了一对多(单向.双向).多对多(双向),今天就讲解一下最后一个关系,一对一. 心情不错.状态也挺好的,赶紧写一篇博文造福一下大家把. --WH 一.一对一关系的概述 一对一关系看起来简单 ...
- 2.Hibernate的主配置文件hibernate.cfg.xml
1.配置 Hibernate 需要事先知道在哪里找到映射信息,这些映射信息定义了 Java 类怎样关联到数据库表.Hibernate 也需要一套相关数据库和其它相关参数的配置设置.所有这些信息通常是作 ...
- Hibernate框架 主配置文件(Hibernate.cfg.xml) 映射配置 说明
Hibernate.cfg.xml 主配置文件中主要配置:数据库连接信息.其他参数.映射信息! 常用配置查看源码: hibernate-distribution-3.6.0.Final\project ...
- Hibernate的主配置文件hibernate.cfg.xml
1:Hibernate的主配置文件的名字必须是hibernate.cfg.xml(主要配置文件中主要配置:数据库连接信息,其他参数,映射信息):常用配置查看源码:Hibernate\hibernate ...
- Hibernate框架 主配置文件 Hibernate.cfg.xml 映射配置 说明
1 主配置文件 Hibernate.cfg.xml 主配置文件中主要配置:数据库连接信息.其他参数.映射信息! 常用配置查看源码: hibernate-distribution-3.6.0.Final ...
- Hibernate(三)结构-配置文件-实体映射及配置文件
一.体系结构 SessionFactory:属于单一数据库的编译过的映射文件的一个线程安全的,不可变的缓存快照.Session的工厂.有可能持有一个可选的数据缓存可以进程级别或者群级别保存可以在事务中 ...
- JavaWeb_(Hibernate框架)Hibernate配置文件hibernate.cfg.xml
hibernate.cfg.xml配置文件——链接数据库 hibernate.cfg.xml一定要配置在/src文件目录下 --数据库驱动,url,用户名,密码 --方言org.hibernate.d ...
- 【hibernate】hibernate和mybatis的比较
理解和学习,使自己在做项目中更加得心应手. 第一方面:开发速度的对比就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些.个人觉 ...
- Spring Boot2 系列教程 (五) | yaml 配置文件详解
自定义属性加载 首先构建 SpringBoot 项目,不会的看这篇旧文 使用 IDEA 构建 Spring Boot 工程. 首先在项目根目录 src >> resource >&g ...
随机推荐
- 13.HashMap TreeMap HashTable LinkedHashMap 的区别
数据库基本连接equals和hashCode详解 http://www.cnblogs.com/XMMDMW/p/6502355.html
- oracle session数激增排查过程
我们的生产系统使用的是oracle 11G RAC,昨天突然收到微信告警通知session数达到450个,平时的session数在200个左右. select username,status,mach ...
- Android_内部文件读取
我们这里做一个安卓的简易的文件读取程序之记住密码 首先我们先明确安卓的存储路径, 所有安装至手机的应用都会在 data/data 目录下生成一个安卓文件夹(包名),这个文件夹就是安卓存储的路径 在运行 ...
- 自动化运维工具---expec
作为运维经常操作Linux服务器是不可避免的事情的,那么你们都是怎么管理的呢? 我们管理的方式较为复杂了,我说一下: 有一套服务器资产管理系统,所有服务器都记录在上面,包括用户名密码,内外网地址都会有 ...
- Algorithm --> 顺序打印矩阵
顺序打印矩阵 思路 参考代码 #include <iostream> using namespace std; ], int row, int col) { || col < ) r ...
- Android 优化APP 构建速度的17条建议
转载:http://www.jianshu.com/p/a1cc8f2e0877 较长的构建时间将会减缓项目的开发进度,特别是对于大型的项目,app的构建时间长则十几分钟,短则几分钟,长的构建时间已经 ...
- Item 15: 只要有可能,就使用constexpr
本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 如果说C++11中有什么新东西能拿"最佳困惑奖" ...
- node初始
### 一.什么是node.js > Node是一个基于 Chrome V8 引擎的 JavaScript 运行环境 > > Node使用了一个事件驱动.非阻塞式 I/O 的模型,使 ...
- 实验四:Android 开发基础
实验四:实验报告 课程:程序设计与数据结构 班级: 1623 姓名: 张旭升 学号:20162329 指导教师:娄嘉鹏 王志强 实验日期:5月26日 实验密级: 非密级 预习程度: 已预习 必修/选修 ...
- Beta开始前准备
Beta准备 1. 讨论组长是否重选的议题和结论. 经过讨论,我们认为,经过一段时间的磨合,现任组长是不需要更换的. 2. 下一阶段需要改进完善的功能. 增加关于征信的功能,贴近选题主题 美化界面,尽 ...