2.Hibernate的基本配置

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的配置

示例:

<propertyame="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>

<propertyname="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>

<propertyname="connection.username">javass</property>

<property name="connection.password">javass</property>

 

数据源的配置 

示例如下

<propertyname="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>

为了让应用在JDBC事务和JTA事务环境中可以移植,建议使用可选的Hibernate TransactionAPI, 它包装并隐藏了底层系统

通过设置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包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值