netHibernate 2011-04-11
(1)hibernate属性:
表示该列和做外键的时候是多对一的关系,一个机构上面职能有一个父机构
(2一个机构可以有多个子机构,是一对多的关系
inverse:表示把数据的维护交给被控方
lazy:是否延迟加载
2.数据库中的几个关系
(1)onetoone意思是关系的任意一方确定了的情况下,另外一方就可以被确定,或者说要么不存在,要么唯一。例如在中国合法夫妻的关系就是一对一(这个比喻有点。。。)
(2)manytoone意思是从many这一方可以确定唯一的one方,例如父子关系,正常情况下儿子对父亲是manytoone的,知道儿子则可以确定唯一的父亲如果一定要把性别建一个表的话,人和性别的关系的确就应该是manytoone,你认为的一个人只有一个确定的性别,只能断定从另一方必然为one,而同一个性别的人有...多个,所以确定性别的另外一边是many,最后组合他们的关系就为manytoone.
(3)manytomany关系数据库中两个表之间的一种关系,该关系中第一个表中的一个行可以与第二个表中的一个或多个行相关。第二个表中的一个行也可以与第一个表中的一个或多个行相关。要表示多对多关系,您必须创建第三个表,该表通常称为联接表,它将多对多关系划分为两个一对多关系。
3.hibernate几个映射的机制
hibernate的映射其实就是内存中的一个引用和数据库表之间存储和加载的过程。
(1)多对一
比如儿子类对父亲类就是多对一的关系,在hibernate中,多对一的实现其实是拥有引用的一方把引用的标识保存到自己的外键中。例子:内存里面有儿子这个类,儿子具有父亲这个属性,也就是拥有父亲这个引用,在调用save的方法的时候,就是在儿子这张表里面加入了父亲这个引用的id。而在加载的时候就是pid匹配。
(2)一对多
就是多对一个方向思考。在hibernate中,一对多的概念就是在引用的表中添加一个一个key指向自己。比如父亲拥有儿子这个集合,hibernate的工作就是让儿子的的pid指向自己。加载的时候就是在pid中匹配。
(3)多对多
就是一个多对一和一个一对多的组合。
4.hibernate中的inverse
inverse的意思就是自己本身不去维护数据库表。
比如一个父亲在更新的时候,不会改变原来的儿子的属性。假如不用inverse的话,父亲类的必须要加载出原来在数据库中的数据才能更新,而有了inverse之后.直接更新就可以,不会改变原来的set属性。