(近期在研究hibernate5的源码,准备同时写一些随笔分享出来,也方便以后自己查找)
Hibernate5源码浅析(一)SessionFactory的创建过程
我们调用Hibernate的第一步就是创建SessionFactory,这一步一句代码可以写完,但是为了分析整个过程,我们分解为以下三句:
Configuration cfg = new Configuration();//1初始化配置类 cfg.configure();//2加载配置文件 SessionFactory sf = cfg.buildSessionFactory();//3根据配置创建SessionFactory
1、初始化配置类
打开Configuration的源码我们可以看到这个构造函数内部一共调用了以下三个方法:
public Configuration() {
//这里创建了一个BootstrapServiceRegistry实例传入下一个构造函数 this( new BootstrapServiceRegistryBuilder().build() ); } public Configuration(BootstrapServiceRegistry serviceRegistry) {
//根据传来的值,初始化bootstrapServiceRegistry字段 this.bootstrapServiceRegistry = serviceRegistry;
//初始化了metadataSources字段 this.metadataSources = new MetadataSources( serviceRegistry ); reset(); } protected void reset() { implicitNamingStrategy = ImplicitNamingStrategyJpaCompliantImpl.INSTANCE; physicalNamingStrategy = PhysicalNamingStrategyStandardImpl.INSTANCE; namedQueries = new HashMap<String,NamedQueryDefinition>(); namedSqlQueries = new HashMap<String,NamedSQLQueryDefinition&g