Hibernate 配置文件

  •Hibernate 配置文件主要用于配置数据库连接和 Hibernate 运行时所需的各种属性
  •每个 Hibernate 配置文件对应一个 Configuration 对象

hibernate.cfg.xml的常用属性

  •JDBC 连接属性

    –connection.url:数据库URL
    –connection.username:数据库用户名
    –connection.password:数据库用户密码
    –connection.driver_class:数据库JDBC驱动
    –dialect:配置数据库的方言,根据底层的数据库不同产生不同的 sql 语句,Hibernate 会针对数据库的特性在访问时进行优化

  •C3P0 数据库连接池属性

    –hibernate.c3p0.max_size: 数据库连接池的最大连接数
    –hibernate.c3p0.min_size: 数据库连接池的最小连接数
    –hibernate.c3p0.timeout:   数据库连接池中连接对象在多长时间没有使用过后,就应该被销毁
    –hibernate.c3p0.max_statements:  缓存 Statement 对象的数量
    –hibernate.c3p0.idle_test_period:  表示连接池检测线程多长时间检测一次池内的所有链接对象是否超时. 连接池本身不会把自己从连接池中移除,而是专门有一个线程按照一定的时间间隔来做这件事,这个线程通过比较连接对象最后一次被使用时间和当前时间的时间差来和 timeout 做对比,进而决定是否销毁这个连接对象。
    –hibernate.c3p0.acquire_increment: 当数据库连接池中的连接耗尽时, 同一时刻获取多少个数据库连接

  •其他

  –show_sql:是否将运行期生成的SQL输出到日志以供调试。取值 true | false
  –format_sql:是否将 SQL 转化为格式良好的 SQL . 取值 true | false
  –hbm2ddl.auto:在启动和停止时自动地创建,更新或删除数据库模式。取值 create | update | create-drop | validate
  –hibernate.jdbc.fetch_size 实质是调用 Statement.setFetchSize() 方法设定 JDBC 的 Statement 读取数据的时候每次从数据库中取出的记录条数。
    Oracle数据库的JDBC驱动默认的Fetch Size = 10,是一个保守的设定,根据测试,当Fetch Size=50时,性能会提升1倍之多,当 fetchSize=100,性能还能继续提升20%,Fetch Size继续增大,性能提升的就不显著了。并不是所有的数据库都支持Fetch Size特性,例如MySQL就不支持

  -hibernate.jdbc.batch_size: 设定对数据库进行批量删除,批量更新和批量插入的时候的批次大小,类似于设置缓冲区大小的意思。batchSize 越大,批量操作时向数据库发送sql的次数越少,速度就越快。Oracle数据库 batchSize=30 的时候比较合适。

对象关系映射文件

映射文件说明

•hibernate-mapping
  –类层次:class
    •主键:id
    •基本类型:property
    •实体引用类: many-to-one  |  one-to-one
    •集合:set | list | map | array
      –one-to-many
      –many-to-many
    •子类:subclass | joined-subclass
    •其它:component | any 等
  –查询语句:query(用来放置查询语句,便于对数据库查询的统一管理和优化)

Java 时间和日期类型的 Hibernate 映射

1). 两个基础知识:

  I. 在 Java 中, 代表时间和日期的类型包括: java.util.Date 和 java.util.Calendar. 此外, 在 JDBC API 中还提供了 3 个扩展了 java.util.Date 类的子类: java.sql.Date, java.sql.Time

和 java.sql.Timestamp, 这三个类分别和标准 SQL 类型中的 DATE, TIME 和 TIMESTAMP 类型对应

  II. 在标准 SQL 中, DATE 类型表示日期, TIME 类型表示时间, TIMESTAMP 类型表示时间戳, 同时包含日期和时间信息.

2). 如何进行映射 ?

  I. 因为 java.util.Date 是 java.sql.Date, java.sql.Time 和 java.sql.Timestamp 的父类, 所以 java.util.Date可以对应标准 SQL 类型中的 DATE, TIME 和 TIMESTAMP
  II. 基于 I, 所以在设置持久化类的 Date 类型是, 设置为 java.util.Date.
  III. 如何把 java.util.Date 映射为 DATE, TIME 和 TIMESTAMP ?
  可以通过 property 的 type 属性来进行映射:
例如:
<property name="date" type="timestamp">
<column name="DATE" />
</property> <property name="date" type="data">
<column name="DATE" />
</property> <property name="date" type="time">
<column name="DATE" />
</property>

其中 timestamp, date, time 既不是 Java 类型, 也不是标准 SQL 类型, 而是 hibernate 映射类型.

 

最新文章

  1. 发布一个开源极致的javascript模板引擎tpl.js
  2. 深入揭秘HTTPS安全问题&amp;连接建立全过程
  3. C# 命令绑定
  4. Linq学习之操作符
  5. iOS 微信 音频 视频自动播放
  6. Team Foundation API - 编程访问 WorkItem
  7. NSDate &amp; NSDateFormatter
  8. Ubuntu 在右键快捷菜单中添加“Open in Terminal”
  9. The Embarrassed Cryptographer(高精度取模+同余模定理)
  10. POJ2239 二分图最大匹配
  11. 基于CAShapeLayer和贝塞尔曲线的圆形进度条动画【装载】
  12. SSH报错分析
  13. TensorFlow-谷歌深度学习库 体验一二三
  14. require.js使用步骤
  15. 【Java基础】【08面向对象_继承&amp;方法&amp;final】
  16. Nagle 算法
  17. docker安装nginx和php
  18. xml的解构与组装
  19. APP安全防护基本方法(混淆/签名验证/反调试)
  20. Linux sudo用法与配置

热门文章

  1. 认识Service
  2. iOS项目中的version和build
  3. ajax跨域jsonp
  4. mybatis实战
  5. 检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
  6. 【bzoj1040】骑士
  7. Spring表达式语言 之 5.1 概述 5.2 SpEL基础(拾叁)
  8. xml中的xmlns,xmlns:xsi,xsi:schemaLocation有什么作用,如果没有会怎么样呢
  9. 20145218 《Java程序设计》第三周学习总结
  10. js中tagName和nodeName