Hibernate的核心接口与类

1.configuration类
  主要作用是:解析hibernate配置文件和持久化映射文件中的信息.需要注意的是:该类仅仅只是在获取SessionFactory对象时需要使用,在获取SessionFactory后,由于配置信息已经由hibernate维护并绑定在放回的SessionFactory中,所以该configuration对象已经无使用价值.
下面让我们看看权威的挨批(API)文档上解释吧:
引用
An instance of Configuration allows the application to specify properties and mapping documents to be used when creating a SessionFactory. Usually an application will create a single Configuration, build a single instance of SessionFactory and then instantiate Sessions in threads servicing client requests. The Configuration is meant only as an initialization-time object. SessionFactorys are immutable and do not retain any association back to the Configuration.

重点理解粗字部分,通常情况下一个应用只会创建一个config对象,创建一个SessionFactory对象,然后使用session对象来处理客户请求.他只是个"初始化瞬间"变量.
一步情况下我们会创建一个简单工厂来生产SessionFactory对象,代码如下:
package util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class SessionFactoryUtil {
	private static final SessionFactory sf;
	
	static{
		try{
			sf = new Configuration().configure().buildSessionFactory();
		}
		catch(Throwable tw){throw new ExceptionInInitializerError(tw);}
	}
	
	private SessionFactoryUtil(){}
	
	public SessionFactory getSessionFactory(){
		return sf;
	}
}

配置文件的格式一般如下:
<?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>
	<!-- 添加C3P0数据库连接池 -->
	<property name="c3p0.min_size">5</property>
	<property name="c3p0.min_size">10</property>
	<property name="c3p0.max_statements">50</property>
	<property name="c3p0.timeout">3600</property>
	<property name="c3p0.idle_test_period">120</property>
	<property name="c3p0.acquire_increment">2</property>
	<!-- 数据库连接配置  -->
	<property name="connection.url">jdbc:mysql://127.0.0.1:3306/hibernate</property>
	<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
	<property name="connection.username">root</property>
	<property name="connection.password"></property>
	<!-- 数据库开发选项 -->
	<property name="current_session_context_class">thread</property>
	<property name="show_sql">true</property>
	<property name="format_sql">true</property>
	<property name="myeclipse.connection.profile">HibernateDemoMYSQLDriver</property>

</session-factory>

</hibernate-configuration>

2.SessionFactory接口
通过SessionFactory对象可以获取Session对象,正如上面api文档所讲的,设计者的意图是让他能在整个应用中共享使用,即如果只使用一个数据库,则只需要使用一个SessionFactory对象,如果你需要同时操作多个数据库则需要生产多个SessionFactory,还有,SessionFactory是作为一级缓存的形式存在,缓存了自动生成的SQL语句和一些其他的映射数据,同时还缓存了一些将来有可能重负使用的持久化对象.生成SessionFactory代码如下:
Configuration config = new Configuration();
config.configure();
SessionFactory sessionfactory = config.buildSessionFactory();

待续....

你可能感兴趣的:(sql,Hibernate,xml,mysql,jdbc)