`
ajuanlong
  • 浏览: 105117 次
社区版块
存档分类
最新评论

Hibernate4实战 之 第二部分:Hibernate的基本配置

阅读更多

可编程的配置方式-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包。
  
11
0
分享到:
评论

相关推荐

    Hibernate实战(第2版) 高清扫描版

    Hibernate实战(第2版) 高清扫描版

    hibernate实战 英文版

    hibernate实战 英文版 最权威的hibernate著作 快来下载吧

    Hibernate实战第二版

    《图灵程序设计丛书·Hibernate实战(第2版)》是毋庸置疑的Hibernate和ORM(对象/关系映射)权威著作,由包括Hibernate之父在内的两位核心开发人员亲自执笔,详细讲述了Hibernate 3.2、Java Persistence和EJB 3.0标准...

    Hibernate实战(第2版).zip

    Hibernate实战(第2版).zip Hibernate实战(第2版).zip

    Hibernate实战(第2版).pdf

    Hibernate实战(第2版).pdf Hibernate实战(第2版).pdf

    Hibernate实战.pdf 第2版 中文完整版

    《Hibernate实战》(第2版)是毋庸置疑的Hibernate和ORM(对象/关系映射)权威著作,详细讲述了Hibernate3.2、JavaPersistence和EJB3.0标准。《Hibernate实战》(第2版)通过一个应用将数百个例子融合起来,不仅深入剖析...

    深入浅出Hibernate(PDF)第二部分

    直至Hibernate实战,重点讲述了Hibernate的基础语法、基础配置、O/R映射、数据关联、数据检索、HQL实用技术、自定义持久化实现、Hibernate回调与拦截、Hibernate分页等实用技术,Hibernate实战部分则用一个真实论坛...

    Hibernate实战(第2版 中文高清版)

    第二部分 映射概念和策略  第4章 映射持久化类   4.1 理解实体和值类型   4.1.1 细粒度的领域模型   4.1.2 定义概念   4.1.3 识别实体和值类型   4.2 映射带有同一性的实体   4.2.1 理解Java同一性和...

    Hibernate实战(第2版)高清

    《Hibernate实战(第2版)》通过开发一个将数百个单独示例联系起来的应用程序来探究Hibernate。你将直接深入到Hibernate的富编程模型之中,贯穿映射、查询、抓取策略、事务、会话、缓存以及更多其他内容。书中图文并茂...

    Hibernate实战(第2版)

    《Hibernate实战》(第2版)详细讲述了Hibernate3.2、JavaPersistence和EJB3.0标准。《Hibernate实战》(第2版)通过一个应用将数百个例子融合起来,不仅深入剖析了Hibernate3.2和JavaPersistence丰富的编程模型。还深刻...

    Manning.Java.Persistence.with.Hibernate[Hibernate实战第二版].pdf

    英文版第二版,hibernate之父执笔,Hibernate3更新版,Manning出版社,PDF无锁可复制,841页完全版

    深入浅出Hibernate(PDF)第一部分

    直至Hibernate实战,重点讲述了Hibernate的基础语法、基础配置、O/R映射、数据关联、数据检索、HQL实用技术、自定义持久化实现、Hibernate回调与拦截、Hibernate分页等实用技术,Hibernate实战部分则用一个真实论坛...

    Hibernate实战

    《Hibernate实战》(第2版)是毋庸置疑的Hibernate和ORM(对象/关系映射)权威著作,详细讲述了Hibernate3.2、JavaPersistence和EJB3.0标准。《Hibernate实战》(第2版)通过一个应用将数百个例子融合起来,不仅深入剖析...

    hibernate实战第二版.pdf

    这个是hibernate实战的第二版的pdf文档,很清晰,讲的挺好的,分享上来希望对大家有帮助

    Hibernate 实战 第2版 PDF 带目录

    Hibernate 实战 第2版 PDF 带目录

    hibernate实战 第2版.pdf

    hibernate实战.pdf 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!

    轻量级Java EE企业应用实战 (第4版) Struts 2+Spring 4+Hibernate整合开发

    《轻量级Java EE企业应用实战:Struts2+Spring4+Hibernate整合开发(第4版)》是《轻量级Java EE企业应用实战》的第4版,第4版保持了前几版内容...第二部分详细讲解了Struts 2.3、Spring 4.0和Hibernate 4.3三个框架

    深入浅出hibernate(PDF)第三部分

    直至Hibernate实战,重点讲述了Hibernate的基础语法、基础配置、O/R映射、数据关联、数据检索、HQL实用技术、自定义持久化实现、Hibernate回调与拦截、Hibernate分页等实用技术,Hibernate实战部分则用一个真实论坛...

Global site tag (gtag.js) - Google Analytics