怎么样实现基于hibernate的das研究功能?
按公司的计划基于hibernate实现了das,这里写的系列blog当然是不能写DAS实现过程的,那是公司机密。
本系列blog主要是对hibernate的实现原理做一个分析,这个对以后工作中的回忆和新功能实现是非常有用的。
本文主要分析hibernate的sessionFactory的build过程。
1)new Configure().buildSessionFactory();
Configuration.java 要做的事情就是 读出 mapping配置(.hbm.xml) 和 setting配置(.cfg.xml)
2) SessionFactoryImpl.java
要做的事情就是 设置identifierGeneration/ Named Query/ cache strategy。然后最主要的,就是
构造一个 EntityPersister。
3)org.hibernate.persister.entity.AbstractEntityPersister(请f4查看这个类的type hierarchy!)
GavinKing对这个类写的说明是: Basic functionality for persisting an entity via JDBC
through either generated or custom SQL。 在Class方面,它实现了ClassMetaData接口,在对象方面,
它有一个EntityMetaModel属性。 类元数据/实体元模型,两大meta都在这个类中,可以明白这个基本是
Hibernate 最重要的一个文件。它的425行有这样一段:
this.entityMetamodel = new EntityMetamodel( persistentClass, factory );
4)EntityMetaModel.java的基本所有的 元模型都是用persistentclass来获得的。另外它还持有一个属性:
tuplizerMapping。tuplizerMapping是一个map,包括了从 EntityMode到tuplizer的 mapping。
tuplizerMapping是实现DAS功能的最主要的扩展点。
本文地址:http://www.45fan.com/a/question/67726.html