hibernate学习笔记3.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
hibernate学习笔记3

?hibernate学习笔记3 ???hibernate核心 表和表的关系: 常见有7中关系: 单项关系一下四种??????? 1-1??外键1-1,主键1-1的关系 1-n n-1 n-n 多项关系:互相使用; 1-1 1-n(n-1) n-n ???以下有两个表,user_info、和login连个表。表和字段如下; User_info Uid??truename??phone???sex ? Longin Lid???longinname??password??uid 这里建立了user类和longin类,同事new了user User表中不含login字段,但是longin表中有user_info字段,但是在login的类中加入了user应用; 注:a在单项外键1-1中第一个表的主键是另外一个表的外键,所以在另外一个表里,这个外键不受约束可以随便写。为了达到主外键一一对应就用到unique写法如下 many-to-one name=user column=uid not-null=true class=User unique=true cascade=all /many-to-one当把配置文件和类写好就可以自动生成数据库连接表了; 保存的时候:这里先将user先存入进去,因为只有主键先获得持久化才能跟其他表有关系;注意外键配置时候必须不能为空;也就是说user_info是父表,另外的表longin为子表,但查询的时候必须先查询子表,也就是login表,因为user_info表中没有login表中的属性,但login表中有user_info的应用: //这里只保存了一个关联表被关联的不保存一般会报错,但是有这样的配置就会保存一个表:级联(如:两表通过?id字段建立一对一关系,同时选项上了“实施参照完整性”“级联更新相关字段”“级联删除相关记录”,目的是实现,当在employee建立新用户时,同时自动在user_right表中给其建立相应的权力记录,但我发现如在employee中新增一个用户时,user_right并没有同步增加一条记录,但是在employee中删除一个用户时,user_right中却会同步更新!):cascade(级联)=all它将配置的关联和被关联的对象共存亡; 多项外键1-1:其它不变就是对象的模型变了,在user表中加入(表名)longin对象字段,也就是双向包含,所以在user配置中加入了one-to-one name=loginclass=Loginproperty-ref(表示关联对方的属性)=user/one-to-one这样保存数据顺序和上一致,但是查询可以是反向和正向,有利于查询 b共享主键关联:可以是主键名不一样,但主键值必须一样,也就是关系模型有变化,对象模型则不会变化; 1-1的单项共享主键关联:主键在longin中,所以先创建longin在创建user ???????????1-1的双项共享主键关联:保存的时候以login的主键为主,所以先保存login:查询则无所谓; ?????单项n-1:先保存有主键的对象在保存无主见的对象;many - to-one/many-to-one,连个表字段: ???????????????????????????????????T_room????????????????????????user ???????????????????????????????????Id??idname????????????1—????----???n????id??username???rooomid ???????双项n-1:数据库不变,只是变对象用到private SetUser users;,一个循环语句for(User user:users) ?????单项1-n:主控权放在1的上面,而n-1主控权在n的一方,所以在1的一方加上引用 ??????????????????????????????room??1-------- n????user ????????双项1-n:就是在在n的一方加上引用,在user方加上many -to-one ???????????????????????????????????注:在1掌控的时候,会发送多余的sql语句(update),所以效率就下降了,所以可以在配置文件中加入inverse=true反转(就是将主控权交给多的一方,false的话就是自己掌控),这时候注意的是操作数据只能从n的一方去操作;而有n掌控时候就不会发多余的; ???n-n的关系:实现的时候需要一个中间表,中间表中有连个字段,它们就是联合主键(联合主键就是这个表里字段值不能一样的,两个字段加起来做一个主键),保存的时候先保存无set的那个对象;

文档评论(0)

wt60063 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档