ch09Hibernate编程课件.ppt

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ch09Hibernate编程课件

问题: 级联添加后student表的deptid是null ? 解决: inverse=“false 2、inverse属性 我们来谈一下inverse属性:这个属性不好理解。我们打个比方来说这个属性。一个学校有个校长,学校里有很多学生。学生表中假设有一个字段是校长编号(多方),如果我们增加一个学生,学生记录中校长编号字段如何填呢?显然学生自己填(即由学生方维护)要容易些,学生记住校长现实点。如果你要让校长填写学生的校长编号这个字段(即由校长方维护)则比较难,因为校长如何记住那么多学生呢? 2、inverse属性 例9.7 inverse属性示例. 首先给出Team.hbm.xml和Student.hbm.xml配置文件信息 Team.hbm.xml代码如下(省略部分): ???class name=bean.Team table=TEAM ??????? set name=students cascade=all ??????? ?key ??????? ??column name=TEAM_ID length=20 / ??????? ?/key ??????? ?one-to-many class=bean.Student / ??????? /set ???/class 2、inverse属性 Student.hbm.xml代码如下(省略部分): ??? class name= bean.Student table=STUDENT ??????????? many-to-one name=team class=bean.Team fetch=select ??????????? column name=TEAM_ID length=20 / ??????? /many-to-one ???????/class 从上面的代码中没有出现一个inverse关键字,证明维护关系由班级表和学生表一起来维护。比如:现在有新的学生要进入某一个班级(班级号t001),可以编写如下的代码来完成该功能。 Session session = HibernateSessionFactory.getSession(); ??Transaction tran = session.beginTransaction(); ??Query query = session.createQuery(from Student); ??List list = query.list(); ??Team team = (Team) session.get(Team.class, t001); ??for (int i = 0; i list.size(); i++) { ??? Student stu = (Student) list.get(i); ??? if (stu.getTeam() == null) { ??? ? team.getStudents().add(stu); ??? } ??} ??mit(); 这段代码通过班级来添加学生信息的,也就是说添加学生信息可以由班级来维护。 例9.8 现在只给出Team.hbm.xml配置文件,其中添加了inverse关键,学生映射文件未变。代码如下(省略部分)。 ??? class name=bean.Team table=TEAM ??????? set name=students inverse=true cascade=all ??????? ?key ??????? ??column name=TEAM_ID length=20 / ??????? ?/key ??????? ?one-to-many class=bean.Student / ??????? /set ??? /class 按照上面的配置信息,如果还是想完成新的学生要进入某一个班级(如班级号为t001的班级)这个功能,代码编写如下: ??Session session = HibernateSessionFactory.getSession(); ??Transaction tran = session.beginTransaction(); ??Query query = session.createQuery(from Student); ??List list = query.list(); ??Team team = (Team) session.get(Team.class, t001); ??for (int i = 0; i list.size(); i++) { ??? Student stu = (Student) list.get(i); ?? ?if(s

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档