• Hibernate4教程二:基本配置


    可编程的配置方式一:
    如果在配置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)  //全限定名,但是该代码和class在同路径下可直接写Item.class
        .addClass(org.hibernate.auction.Bid.class);
    这种方式消除了任何对文件名的硬编码。
     
    可编程的配置方式二:
    还可以通过编程的方式来指定配置属性:
    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>
           
    <!-- 使用c3p0连接池配置连接池提供的供应商-->  
    <property name="connection.provider_class">  
        org.hibernate.connection.C3P0ConnectionProvider  //是依据hbm3.6版本的
    </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包。
     
     
  • 相关阅读:
    编译 安装 infobright
    MySQL忘记密码恢复密码的实现方法
    Intel 服务器 架构 NUMA
    Centos 卸载 java
    vs2010 无法将文件“obj**”复制到“bin**”
    linux安装eclipse PyDev
    infobright 编译安装
    [转贴]==开手排车的八个绝招==
    [摘]广义企业级PDM系统下的PPM(工艺规划管理)
    中国皇帝定下佛教戒律:僧人不准吃肉
  • 原文地址:https://www.cnblogs.com/itommy/p/10610485.html
Copyright © 2020-2023  润新知