Configuration类
类声明:
public class Configuration extends Object implements Serializable
一,Configuration的作用是对Hibernate进行配置 以及对其进行启动。它包括:
Hibernate运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池。Hibernate映射文件(*.hbm.xml)等。
在Hibernate的启动过程中 Configuration类的实例首先定位映射文档的位置 ,读取这些配置 然后创建一个SessionFactory对象。
二,一个org.hibernate.cfg.Configuration实例代表了一个应用程序中Java类型到SQL数据库映射的完整集合。Configuration被用来构建一个不可变的SessionFactory,映射定义则由不同的XML映射定义文件编译而来。
Hibernate配置的两种方法:
属性文件(hibernate.properties)。
当我们调用:Configuration cfg = new Configuration();
时,Hibernate会自动在目录下搜索hibernate.properties文件,并将其读取到内存中作为后续操作的基础配置
Xml文件(hibernate.cfg.xml)。
当我们调用:Configuration cfg = new Configuration().configure()//这里括号内是.xml文件的全类名;
时,Hibernate会自动在目录下搜索hibernate.cfg.xml文件,并将其读取到内存中
作为后续操作的基础配置
Configuration的加载方式
configuration有三种加载方式,一般我们使用hibernate.cfg.xml ,该文件设置了数据库连接的属性和hbm.xml映射文件配置 ,hibernate会自动加载该配置属性, 并自动找到POJO。 因此要取得Configuration对象 ,只需要简单的创建该对象即可。
Configuration cfg = new Configuration();
cfg.configure(“config/hibernate.cfg.xml");
SessionFactory类
接口声明
public interface SessionFactory extends Referenceable, Serializable
- SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象(SessionFactory是生成Session的工厂)。这里用到了工厂模式。一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
- SessionFactory保存了对应当前数据库配置的所有映射关系,同时也负责维护当前的二级数据缓存。
- Hibernate4 新增了一个 ServiceRegistry 接口,所有基于 Hibernate 的配置或者服务都必须统一向这个 ServiceRegistry 注册后才能生效。
Configuration configuration = new Configuration().configure();
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().
applySettings(configuration.getProperties()).buildServiceRegistry();
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
ServiceRegistry接口
ServiceRegistry 是 Service 的注册表, 它为Service提供了一个统一的加载 / 初始化 / 存放 / 获取机制.