HIbernate 关系映射配置

阅读更多
1.主键关联one-to-one

释义:两个表使用相同的主键列值

例如:     身份证(IDCard):id , cardno
            中国公民(Person):id , personname

Person.hbm.xml



	
		
			
			
		
		
			
		
		
		
	




IdCard.hbm.xml



	
		
			
			
			
				
				person
			
		
		
			
		
		
		
		
	





cascade 的描述
属性值 描述
all 所以情况下都进行关联操作
none 所有情况下不进行关联操作
save-update 执行 save-upate 操作是关联
delete 执行delete 关联操作时进行关联


唯一外键关联:many-to-one (unique="true")

释义:是指在两张表的主键值不同时,使用一个新添加的字段来作为外键,以维持 1 对1 关联

例如:     身份证(IDCard):id , cardno, personid(新添加的外键字段)
            中国公民(Person):id , personname

IdCard.hbm.xml





	
		
			
			
		
		
		
		
			
		
		
		
		
			
		
		
		
		
	




Person.hbm.xml





	
		
			
			
		
		
			
		
		

		
	






单向一对多关联

例如: 父亲 和 子女 的关系
      班级 和 学生 的关系

班级:
    classiesd  classesName  teacher createdate  (set)students
学生
    stuid    stuName

Classes.hbm.xml





	
		
			
			
		
	
		
			
		
		
		
			
		
		
		
			
		
		
		
		
			
				
			
			
		
	





Student.hbm.xml





	
		
			
			
		
		
			
		
	




单向多对一关联
释义:和单向一对多相反, 所处的角度不一样

例如: 父亲 和 子女 的关系
      班级 和 学生 的关系

班级:
    classiesd  classesName  teacher createdate
学生
    stuid    stuName classes

Student.hbm.xml





	
		
			
			
		
		
		
			
		
		
		
			
		
	





Classes.hbm.xml





	
		
			
			
		
	
		
			
		
		
		
			
		
		
		
			
		
		
	




注意: 单向 多对一 和单向 一对多 关联  在添加的时候 是有顺序的  根据 关系配置的时候 谁是主空方 就的先添加 主控方
有一个 insert  和upate 语句 

双向一对多关联
释义:由于 单向 会出现 添加的时候 有顺序 ,否则会有错误  就出现 双向了

班级:
    classiesd  classesName  teacher createdate    (set) students
学生
    stuid    stuName classes

Classes.hbm.xml





	
		
			
			
		
	
		
			
		
		
		
			
		
		
		
			
		
		
		
			
				
			
			
		
	





Student.hbm.xml






	
		
			
			
		
		
		
			
		
		
		
			
		
	





注意 :双向 表示  你中有我 ,我中有你, 一般采用 双向 关系 替代 单向关系
为了性能考虑 一般主空方 都设在多的那边 (就像一个老师记住那么多学生难,而 一个学生记住下老师 就简单了)

多对多关联
释义:第一个表中的一行可以与第二个表中的一行或多行相关,
     第二个表中的一行 也可以于第一个表中的一行 或者 多行相关
为了建立多对多关联 需要建立一个中间表来表示 相互之间的关系.
在应用系统中,有很多领域都设计到多对多关联.比如 权限管理中的用户和角色 ,角色和 功能之间的关系 ,但是在使用中 多对多的管理性能不佳,建议在使用中 尽量避免 大量使用

单向多对多关联
释义:单向多对多关联 在实际应用中使用频率较低,一般不用

例如:
   用户和地址的关系
   一般只需要在 用户类中 添加  地址的集合关系

Employee.hbm.xml





	
		
			
			
		
	
		
			
		
		
		
			
			
				
			
			
		
	





Address.hbm.xml





	
		
			
			
		
	
		
			
		
		
	





双向多对多关联
释义:双向多对多关联 需要在两端都使用集合属性

例如:
  员工: empid   empName
  地址: addid   addname
(中间表)用户地址: empid  addid

Employee.hbm.xml





	
		
			
			
		
	
		
			
		
		
		
			
			
				
			
			
		
	





Address.hbm.xml





	
		
			
			
		
	
		
			
		
		
		
		
			
				
			
			
		
		
	







分解双向多对多关联
释义:将双向多对多关联分成两个一对多关系关联

例如:
   员工: empid   empName
  地址: addid   addname
(中间表)用户地址: id  empid  addid (注意 添加了一个id)

Employee.hbm.xml





	
		
			
			
		
	
		
			
		
		
                
		
			
			
				
			
			
			
		
	





Addres.hbm.xml





	
		
			
			
		
	
		
			
		
		
		
		
			
				
			
			
			
		
		
	






用户 地址关系表
EmpAddress.hbm.xml





	
		
			
			
		
	
		
			
		
		
		
			
		
		
	




权限管理的设计

功能表 :functions_id, function_name ,iden_Name
角色表 :role_id, role_Name ,description
用户表 :userid, userName,Password,inactive,
角色-功能表  : role_functions_id, role_id,functions_id
角色-用户表: role_user_id ,role_id ,user_id

你可能感兴趣的:(Hibernate,mapping,role,functions)