2019独角兽企业重金招聘Python工程师标准>>>


可编程的配置方式-1
如果在配置cfg.xml的时候,不想在里面配置hbm.xml怎么办呢?可在程序里使用可编程的配置方式,也就是使用程序来指定在cfg.xml里面的配置信息,不推荐这种方式。如下:
Configuration cfg = new Configuration()
.addResource("Item.hbm.xml")
.addResource("Bid.hbm.xml");
一个替代方法(有时是更好选择)是,指定被映射的类,让Hibernate帮你寻找映射定义文件:
Configuration cfg = new Configuration()
.addClass(org.hibernate.auction.Item.class)
.addClass(org.hibernate.auction.Bid.class);
这种方式消除了任何对文件名的硬编码
可编程的配置方式-2
还可以通过编程的方式来指定配置属性:
Configuration cfg = new Configuration()
.addClass(org.hibernate.auction.Item.class)
.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLInnoDBDialect")
.setProperty("hibernate.connection.datasource", "java:comp/env/jdbc/test")
.setProperty("hibernate.order_updates", "true");
其他可以传入配置属性的方式:
1:properties文件
2:xml文件
3:设置Java的系统属性,形如:java –Dproperty=value
另外要注意一点:
org.hibernate.cfg.Configuration 实例被设计成启动期间(startup-time)对象,一旦SessionFactory 创建完成它就被丢弃了。
与数据库连接的配置有两种方法,一种是JDBC,一种是DataSource
JDBC的配置
示例:
<property ame="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin: @localhost :1521:orcl</property>
<property name="connection.username">javass</property>
<property name="connection.password">javass</property>
数据源的配置
示例如下:
<property name="connection.datasource">java:/javassDs</property>
连接池c3p0的配置
由于Hibernate自己实现的连接池不太好,在项目中,建议使用工业级的连接池,比如:c3p0,Hibernate发行包中带有c3p0,下面就是其基本配置示例:
<property name=  "connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name=  "connection.url">jdbc:oracle:thin: @localhost :1521:orcl</property>
<property name=  "connection.username">javass</property>
<property name=  "connection.password">javass</property>
<property name=  "c3p0.min_size">5</property>
<property name=  "c3p0.max_size">20</property>
<property name=  "c3p0.timeout">180</property>
<property name=  "c3p0.max_statements">50</property>

连接池c3p0的配置
由于Hibernate自己实现的连接池不太好,在项目中,建议使用工业级的连接池,比如:c3p0,Hibernate发行包中带有c3p0,下面就是其基本配置示例:
<property name=  "connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name=  "connection.url">jdbc:oracle:thin: @localhost :1521:orcl</property>
<property name=  "connection.username">javass</property>
<property name=  "connection.password">javass</property>
<property name=  "c3p0.min_size">5</property>
<property name=  "c3p0.max_size">20</property>
<property name=  "c3p0.timeout">180</property>
<property name=  "c3p0.max_statements">50</property>

为了解决数据库中元素命名冲突的问题,引入catalog和schema来解决。
从概念上说,一个数据库系统包含多个Catalog,每个 Catalog又包含多个
Schema,而每个Schema又包含多个数据库对象(表、视图、字段等)。
n比较简单而常用的实现方式是使用数据库名作为Catalog名,使用用户名作为Schema名,各种数据库系统对Catalog和Schema的支持具体可参见下表:

为了让应用在JDBC事务和JTA事务环境中可以移植,建议使用可选的Hibernate Transaction API, 它包装并隐藏了底层系统
通过设置Hibernate配置属性hibernate.transaction.factory_class来指定 一个Transaction实例的工厂类
   
有三个标准(内建)的选择:
1:委托给数据库(JDBC)事务(默认)
Hibernate4以前:org.hibernate.transaction.JDBCTransactionFactory
Hibernate4里面:org.hibernate.engine.transaction.internal.jdbc.JDBCTransactionFactory
2:JTA事务,如果在上下文环境中存在运行着的事务(如, EJB会话Bean的方法), 则委托给容器管 理的事务, 否则,将启动一个新的事务,并使用Bean管理的事务.
Hibernate4以前: org.hibernate.transaction.JTATransactionFactory
Hibernate4里面: org.hibernate.engine.transaction.internal.jta.JTATransactionFactory
3:委托给容器管理的JTA事务
Hibernate4以前: org.hibernate.transaction.CMTTransactionFactory
Hibernate4
里面:org.hibernate.engine.transaction.internal.jta.CMTTransactionFactory
也可以定义属于你自己的事务策略 (如, 针对CORBA的事务服务)

1:Hibernate使用SLF4J来做日志记录,可以根据你选择的绑定把日志输出到日志框架(NOP、Simple、log4j version 1.2、JDK 1.4 logging、JCL 或 logback)上。
2:需要在 classpath 里加入 slf4j-api.jar 和你选择的绑定的 JAR 文件(使用 Log4J 时加入slf4j-log4j12.jar) ,当然别忘了加入log4j自己的jar包。

频配套PPT,视频地址【  Hibernate4实战-独家视频课程 】
原创内容 转自请注明【  http://sishuok.com/forum/blogPost/list/2465.html#7133】

转载于:https://my.oschina.net/u/557063/blog/64183

Hibernate4实战 之 第二部分:Hibernate的基本配置相关推荐

  1. Hibernate4实战 之 第一部分 Hibernate入门

    第一部分:Hibernate入门 Hibernate是什么 Hibernate是一个轻量级的ORMapping框架 ORMapping原理(Object Relational Mapping) ORM ...

  2. Hibernate4实战 之 第一部分:Hibernate入门

    第一部分:Hibernate入门 Hibernate是什么 Hibernate是一个轻量级的ORMapping框架 ORMapping原理(ObjectRelational Mapping) ORMa ...

  3. oracle hibernate 注解,Hibernate4实战之Hibernate4注解零配置

    Hibernate4实战之Hibernate4注解零配置 @Entity,注册在类头上,将一个类声明为一个实体bean(即一个持久化POJO类) . @Table,注册在类头上,注解声明了该实体bea ...

  4. Hibernate4实战 之 第四部分:关系映射

    数据表之间的关系分为三类:一对一.一对多.多对多 一对一数据表(部门表  和  部门主管表) 一对多数据表(部门表  和  部门下的人员表) 多对多数据表(部门表  和  人员表) 根据相互寻找的关系 ...

  5. 《Android 开发入门与实战(第二版)》——6.6节配置改变

    本节书摘来自异步社区<Android 开发入门与实战(第二版)>一书中的第6章,第6.6节配置改变,作者eoe移动开发者社区 组编 , 姚尚朗 , 靳岩,更多章节内容可以访问云栖社区&qu ...

  6. 《Python3网络爬虫开发实战(第二版)》上市了!!!!

    " 阅读本文大概需要 5 分钟. " 告诉大家一个好消息:我的好朋友崔庆才老师的<Python3网络爬虫开发实战(第二版)>现在正式上市了!!!! 没错,就是这本: 就 ...

  7. 《Android 开发入门与实战(第二版)》——导读

    本节书摘来自异步社区<Android 开发入门与实战(第二版)>一书中的目录,作者eoe移动开发者社区 组编 , 姚尚朗 , 靳岩,更多章节内容可以访问云栖社区"异步社区&quo ...

  8. 《Android 开发入门与实战(第二版)》——6.10节本章小结

    本节书摘来自异步社区<Android 开发入门与实战(第二版)>一书中的第6章,第6.10节本章小结,作者eoe移动开发者社区 组编 , 姚尚朗 , 靳岩,更多章节内容可以访问云栖社区&q ...

  9. 《Python3网络爬虫开发实战(第二版)》内容介绍

    这是「进击的Coder」的第 505 篇分享 作者:崔庆才 大家好,本节首先来预告下即将出版的<Python3网络爬虫开发实战(第二版)>的主要内容. 由于我已经把书的总体的内容介绍写在了 ...

最新文章

  1. 张芯译老师 实战销售管理专家
  2. 无所不在的物联网设备 你我都需要正视所带来的安全问题
  3. vue实战之前期准备
  4. mybatis动态代理
  5. 陌屿云PHP代码在线加密系统6.0源码 可添加小马
  6. mybatis逆向工程生成的xxxExample实例详解
  7. 创建java普通工程 ( 4 )
  8. java 成绩单_java中用if做成绩单
  9. Linux配置jdk环境变量(详细版)
  10. 100大产业链全景图(2020版)及智能制造50大产业链
  11. 微信支付宝无现金之争:瞄准用户支付大数据
  12. 弹性计算的内部概念:弹性扩张、弹性收缩、弹性自愈
  13. 高仿知乎android,Android高仿知乎首页Behavior
  14. redis哨兵模式出现connected_slaves:0解决办法
  15. ubuntu开机停留在(initramfs)页面
  16. ESP-IDF:ESP32 fatory分区不够用,重新分区的方法
  17. Apache Flink fault tolerance源码剖析(六)
  18. 微信小程序image组件频闪问题
  19. 认准魔趣吧唯一网址https://www.moqu8.com,谨防上当受骗!
  20. 20万行代码,搞得定不?

热门文章

  1. 老手萌新学习composer的使用
  2. web渗透测试思路浅谈-----漏洞发现及利用
  3. 什么是DBA[WHAT'S MEANING OF DBA]
  4. GD2拖动验证码Thinkphp版
  5. Android Audio Focus的应用(requestAudioFocus)
  6. CentOS 6.4安装本地yum源
  7. rpm apache2 啟動vhost .htaccess讀取問題
  8. (原创--网上办法经过改良)系统重装后,如何快速的回复oracle 10g(测试环境:windows server 2003 sp1+Oracle 10g)...
  9. SELinux 基础命令
  10. ObjectDataSource自定义分页