Configuration对象

  Hibernate的持久化操作离不开SessionFactory对象,使用该对象的openSession()方法可以打开Session对象。而SessionFactory对象就是由Configuration对象创建的。

  Configuration实例代表了应用程序到SQL数据库的配置信息。Configuration对象提供了一个buildSessionFactory()方法,使用该方法可以产生一个不可变的SessionFactory对象。也可以先实例化Configuration对象,然后在添加Hibernate的持久化类(使用addAnnotatedClass()方法逐个添加持久化类,使用addPackage()方法添加指定包下的所有持久化类)。

  Configuration实例唯一的作用是创建SessionFactory实例,一旦SessionFactory实例被创建后,此Configuration对象便被丢弃。

创建Configuration对象的方法:

1.使用hibernate.properties作为配置文件

  必须通过调用Configuration对象的addAnnotatedClass()方法手动添加持久化类,这是特别麻烦的,所以在开发中不使用这种方式创建Configuration对象。

//实例化Configuration
Configuration cfg = new Configuration()
    //多次调用addAnnotatedClass(Xxx.class)
    .addAnnotatedClass(Xxx.class)
    .addAnnotatedClass(Zzz.class);

2.使用hibernate.cfg.xml作为配置文件(常用)

  因为可以在hibernate.cfg.xml中添加Hibernate的持久化类,所以在使用hibernate.cfg.xml作为配置文件创建Configuration对象时可以直接使用下面的代码:

  Configuration config = new Configuration().configure();

  注意configure()方法十分重要,该方法负责加载hibernate.cfg.xml配置文件。

//实例化Configuration
Configuration cfg = new Configuration()
    //configure()方法将会负责加载hibernate.cfg.xml文件
    .configure();

3.通过编程的方式创建Configuration实例

  在Configuration对象中有以下几个方法:

  Configuration addAnnotatedClass(Class annotatedClass):

    为Configuration对象添加一个持久化类。

  Configuration addPackage(String packageName):

    为Configuration对象添加指定包下的持久化类。

Configuration cfg = new Configuration()
            //设置连接属性
            .addAnnotatedClass(Users.class)
            //设置数据库方言
            .setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect")
            //设置数据库驱动
            .setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver")
            //设置数据库
            .setProperty("hibernate.connection.url", "jdbc:mysql://localhost/test")
            //设置数据库用户名
            .setProperty("hibernate.connection.username", "root")
            //设置数据库密码
            .setProperty("hibernate.connection.password", "stx12345")
            //C3P0数据源相关配置================================================================
            .setProperty("hibernate.c3p0.max_size", "200")
            .setProperty("hibernate.c3p0.min_size", "1")
            .setProperty("hibernate.c3p0.timeout", "5000")
            .setProperty("hibernate.c3p0.max_statements", "200")
            .setProperty("hibernate.c3p0.idle_test_period", "3000")
            .setProperty("hibernate.c3p0.acquire_increment", "2")
            .setProperty("hibernate.c3p0.validate", "false");

  附Hibernate连接MySQL常用配置:

 ## MySQL
 #MySQL --- org.hibernate.dialect.MySQLDialect
 #MySQL with InnoDB --- org.hibernate.dialect.MySQLInnoDBDialect
 #MySQL with MyISAM --- org.hibernate.dialect.MySQLDialect
 #配置数据库方言
 #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
 #配置数据库URL
 #hibernate.connection.url jdbc:mysql:///test
 #配置数据库用户名
 #hibernate.connection.username gavin
 #配置数据库密码
 #hibernate.connection.password
 ###########################
 ### C3P0 Connection Pool###
 ###########################
 #连接池最大连接数
 #hibernate.c3p0.max_size 2
 #连接池最小连接数
 #hibernate.c3p0.min_size 2
 #连接超时
 #hibernate.c3p0.timeout 5000
 #最多可创建的Statement对象数
 #hibernate.c3p0.max_statements 100
 #检测有多少连接超时的周期
 #hibernate.c3p0.idle_test_period 3000
 #当连接池里面的连接用完的时候,C3P0一下获取的新的连接数
 #hibernate.c3p0.acquire_increment 2
 #每次都验证连接是否可用
 #hibernate.c3p0.validate false

Configuration对象的更多相关文章

  1. 无法为请求的 Configuration 对象创建配置文件 错误原因

    Configuration config = WebConfigurationManager.OpenWebConfiguration("~"); 无法为请求的 Configura ...

  2. mybatis源码解读(二)——构建Configuration对象

    Configuration 对象保存了所有mybatis的配置信息,主要包括: ①. mybatis-configuration.xml 基础配置文件 ②. mapper.xml 映射器配置文件 1. ...

  3. C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作,无法为请求的 Configuration 对象创建配置文件。

    应用程序配置文件,对于asp.net是 web.config,对于WINFORM程序是 App.Config(ExeName.exe.config). 配置文件,对于程序本身来说,就是基础和依据,其本 ...

  4. 5 -- Hibernate的基本用法 --4 1 创建Configuration对象

    org.hibernate.cfg.Configuration实例代表了应用程序到SQL数据库的配置信息,Configuration对象提供了一个buildSessionFactory()方法,该方法 ...

  5. Mybatis 创建Configuration对象

    Mybatis  创建Configuration对象是在项目启动时就创建了. 具体创建流程为: https://blog.csdn.net/wolfcode_cn/article/details/80 ...

  6. Mybatis源码解析,一步一步从浅入深(四):将configuration.xml的解析到Configuration对象实例

    在Mybatis源码解析,一步一步从浅入深(二):按步骤解析源码中我们看到了XMLConfigBuilder(xml配置解析器)的实例化.而且这个实例化过程在文章:Mybatis源码解析,一步一步从浅 ...

  7. .net core Configuration对象

    前因:最近在阅读.net core源码,发现关于Configuration介绍的文档都比较多,但是都比较杂乱,(微软文档太官方),所以写下一些自己的感想 主要通过三种使用情况来介绍 Web应用程序使用 ...

  8. Hibernate的Configuration对象的configure()方法

    Configuration configuration=new Configuration(); configuration.configure(); 在Hibernate底层实现configure( ...

  9. hibernate之Configuration对象

    任务:读取主配置信息 1.  Configuration config = new Configuration();      使用hibernate,但并没有读取 2.  config.config ...

随机推荐

  1. paper 63 :函数比较:imfilter与fspecial

    功能:对任意类型数组或多维图像进行滤波. 用法:B = imfilter(A,H) B = imfilter(A,H,option1,option2,...) 或写作g = imfilter(f, w ...

  2. event对象的属性

    事件类型: bubbles:布尔值,表示事件是否通过DOM以冒泡形式触发. 事件发生时,反应当前环境信息的属性: button: 表示(如果有)鼠标所按下的按钮 ctrlKey: 布尔值,表示Ctrl ...

  3. 夺命雷公狗---node.js---18之项目的构建在node+express+mongo的博客项目3头尾左侧分离法

    在实际的开发中我们的项目往往都是需要头尾分离开来的,居然是后台管理界面当然也不能错过这么好的这步.. 首先我们将我们要分离的部分代码先剪切出来,如下所示: 将他们都弄出来... 这部分的内容分别对应的 ...

  4. sql语句删除数据表重复字段的方法

    大家都可能遇到字段重复的情况,网上很多人在找方法,也给出了一些方法,但是有的方法是误导大家,铁牛写出以下方法,方便大家使用 1.通过group by把重复的字段筛选出来,并建立临时表tmp 1 cre ...

  5. 一个Convert、TryParse数据转换的问题

    今天在进行数据转换的时候遇到一个问题,记录下,希望看到的童鞋有点用哦~ Convert.ToInt32(0.80155023553515) 结果为1 但是以下的做法,就不是想当然的结果咯~ int.T ...

  6. Openstack的HA解决方案【替换原有的dashboard】

    0. 进入到/etc/haproxy/conf.d/目录下 mv 015-horizon.cfg 150-timaiaas.cfg 将原有的dashboard的ha配置文件做为自己的配置文件. 1. ...

  7. mysql 利用binlog增量备份,还原实例

    mysql 利用binlog增量备份,还原实例 张映 发表于 2010-09-29 分类目录: mysql 标签:binlog, mysql, mysqldump, 增量备份 一,什么是增量备份 增量 ...

  8. C#:实现托盘(任务栏图标与托盘图标互斥)

    实现托盘(任务栏图标与托盘图标互斥),并且在点击任务栏图标时实现的最小化与点击最小化按钮分离. 具体如下: 1.向窗体上添加如下控件:MenuStrip menuStrip1, NotifyIcon ...

  9. js中字符串转换为数字的方法

    parseInt; parseFload; +; parseInt() 和 parseFloat() 函数会尝试逐个解析字符串中的字符,直到遇上一个无法被解析成数字的字符,然后返回该字符前所有数字字符 ...

  10. vs 常见问题汇总

    vs添加对dll的引用 我们在使用vs进行开发调试的时候经常会遇到一个问题,就是当我们的主工程引用到其他工程更新的dll(我们经常采用copy到工程目录的方法).亦或者当我们的多个工程引用到同一个dl ...