Hibernate源码研究碎得(1)

1, Collections.unmodifiableMap( new HashMap(0) );

看到了这样的语句,不知道个unmodifiableMap在实际中有什么用?

是说整个执行过程中,某一个变量所指向的Instance没有是不可modifiable的吧?而不是这个Map中的具体内容. 这样再结合应用的上下文就通了.



2,Hibernate中有个SecondPass的概念,这个是干啥用的?

看源码时,它的实现类中有这样的关系:

接口SecondPass有两个直接实现类:

CollectionSecondPass和ManyToOneSecondPass,另还有一个继承于此接口的子接口QuerySecondPass

CollectionSecondPass在HbmBinder类中又定义了一个static的类名为HbmBinder.CollectionSecondPass, 这个静态类在HbmBinder中又分别有三个子类(也是静态的)它们是IdentifierCollectionSecondPass,ListSecondPass,MapSecondPass.



ManyToOneSecondPass这个类也是静态的,它也是在HbmBinder类中定义的内部类.

QuerySecondPass接口有两个实现类ResultSetMappingSecondPass和 NamedSQLQuerySecondPass,这两个类都ResultSetMappingBinder的子类.





3,Hibernate N步曲:

1>,new Configuration(): 找hibernate.properties文件,初始化所有Listeners,classes,imports,secondPasses....

2>,configure(): 找到hibernate.hbm.xml文件,将其中的元素解析出来放到Configuration类中的相应的properties里,据cfg.xml文件中指定的hbm.xml名称找到并解析XXX.hbm.xml文件,将配置放到Configuration类中相应的属性中,如classes,imports,collections,tables,sqlFunctions,namedQueries....

3>,buildSessionFactory:据第二步中生成的Configurations类中的相应属性生成CRUD相关的Sql语句,identifierGenerators,entityPersisters,collectionPersisters... 这一步是Mapping路上实质性的一步.

4>,有了第三步的准备,就可以调用Session接口中面向对象的CRUD操作了.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值