Hibernate学习(2)----配置Hibernate

2.1简单的配置

配置Hibernate的最简单方法是仅提供最基础的数据库连接配置,需要在hibernate.cfg.xml文件里设定所使用的数据库驱动,URL,Hibernate方言,数据库的访问用户名和密码,以及在配置时需要加载的*.hbm.xml映射文件,例如以下的hibernate.cfg.xml

<?xml version ='1.0' encoding='utf-8'?>

<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0 .dtd">

<hibernate-configuration>

<session-factory>

<property name="dialect">org.hibernate.dialect.MySQLDialect</property>

<property name="connection.driver_class">org.gjt.mm.mysql.Driver</property>

<property name="connection.url">jdbc:mysql://localhost/hibernate</property>

<property name="connection.username">root</property>

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

<mapping resource="com/joy_cz/computer/computer.hbm.xml"/>

</session-factory></hibernate-configuration> 

        可以利用Hibernate提供的org.hibernate.cfg.Configuration类来将hibernate.cfg.xml中的内容导入,形成Configuration实例,然后由Configuration实例创建SessionFactory对象实例。对应过程代码如下:

PropertyConfigurator.configure("log4j.Properties");

Configuration cfg = new Configuration();

cfg.configure();//或者cfg.configure(new File("src/hibernate.cfg.xml"));

SessionFactory sf=cfg.buildSessionFactory();

2.2连接池的配置

在hibernate中,可以使用多种连接池实现工具,例如:C3P0和Proxool。下面的hibernate.cfg.xml配置文件使用了C3P0数据库连接池:

<?xml version ='1.0' encoding='utf-8'?>

<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0 .dtd">

<hibernate-configuration>

<session-factory>

<property name="dialect">org.hibernate.dialect.MySQLDialect</property>

<property name="connection.driver_class">org.gjt.mm.mysql.Driver</property>

<property name="connection.url">jdbc:mysql://localhost/hibernate</property>

<property name="connection.username">root</property>

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

<property name="hibernate.connection.pool_size">10</property>

<property name="hibernate.connection.provider_class">

org.hibernate.connection.C3P0ConnectionProvider</property>

<property name="hibernate.c3p0.min_size">8</property>

<property name="hibernate.c3p0.max_size">20</property>

<property name="hibernate.c3p0.timeout">2500</property>

<property name="hibernate.c3p0.max_statements">50</property>

<mapping resource="com/joy_cz/computer/computer.hbm.xml"/>

</session-factory></hibernate-configuration>

使用这个配置文件运行Hibernate程序后,Hibernate会启用C3P0连接池。

2.3JNDI和数据源的配置

如果Hibernate被嵌入到J2EE应用服务器中,或者与其他程序共享一个数据源,那么可以通过JNDI来传递数据源对象,此时,在Hibernate的配置文件中,能够通过datasource属性设定数据源的JNDI名称来引用数据源,但是对应名称的数据源一定要在Hibernate引用它之前被其他程序或J2EE应用服务器绑定到JNDI。

<?xml version ='1.0' encoding='utf-8'?>

<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0 .dtd">

<hibernate-configuration>

<session-factory>

<property name="dialect">org.hibernate.dialect.MySQLDialect</property>

<property name="hibernate.jndi.class">org.apache.naming.java.javaURLContextFactory</property>

<property name="hibernate.connection.datasource">Hibernate</property>

<mapping resource="com/joy_cz/computer/computer.hbm.xml"/>

</session-factory></hibernate-configuration>

在这个配置中,使用了APACHE的JNDI服务,对用的JNDI上下文工厂类是:org.apache.naming.java.javaURLContextFactory,包含这个类的naming-factory.jar文件和相关的naming-resources.jar文件可以从TOMCAT的发行包中得到,使用上面的配置文件需要导入这两个JAR文件。使用方法如下:

import java.util.Hashtable;

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.naming.NamingException;

import org.apache.log4j.PropertyConfigurator;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

public class ComputerTest{

public static void main(String[] args){

//创建MYsql数据源

MysqlDataSource ds=new MysqlDataSource();

ds.setURL("jdbc:mysql://localhost:3306/hibernate");

ds.setUser("root");

ds.setPassword("123456");

//设置JNDI参数

Hashtable table=new Hashtable();

table.put(Context.INITIAL_CONTEXT_FACTORY,"org.apache.naming.java.javaURLContextFactory");

try{

InitialContext ctx = new InitialContext(table);

ctx.bind("Hibernate",ds);

}catch(NamingException e1){e1.printStackTrace();}

2.4事务服务

在Hibernate中,默认的事务服务是基于JDBC的数据库事务服务。当忽略事务服务的配置时,默认的事务工厂属性将被配置为:

org.hibernate.transaction.JDBCTransactionFactory

如果在J2EE应用服务器中使用Hibernate,可以将事务工厂类配置为:

org.hibernate.transaction.JTATransactionFactory

同时指定hibernate.transaction.manager_lookup_class属性到特定的查找类,例如,  在JBOSS内使用hibernate时可以将查找类指定为:

org.hibernate.transaction.JBossTransactionManagerLookup

你可能感兴趣的:(xml,应用服务器,Hibernate,mysql,jdbc)