- 1、本文档共69页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
9.3.2 关联关系映射 在“hibernate.cfg.xml”文件中加入如下的配置映射文件的语句: ?mapping resource=org/vo/Student.hbm.xml/ mapping resource=org/vo/Course.hbm.xml/ ?在src下的包“test”的Test类中加入如下代码。 因为该程序为Java Application,所以可以直接运行。在完全没有操作数据库的情况下,程序就完成了对数据的插入。插入数据后,student表、course表以及连接表stu_cour的内容如图9.13、图9.14、图9.15所示。 图9.14 course表 图9.15 stu_cour表 图9.13 student表 9.3.2 关联关系映射 ? 多对多双向关联。 学会多对多的单向关联后,只要同时实现两个互逆的多对多单向关联便可以轻而易举地实现多对多的双向关联。在上例中只要修改课程的代码就可以了。 首先,将其Course表所对应的POJO对象修改成如下代码: ?package org.vo; import java.util.HashSet; import java.util.Set; public class Course implements java.io.Serializable{ private int id; private String cnumber; private String cname; private Set stus=new HashSet(); //省略上述方法的get和set方法 } ?Course表与Course类的ORM映射文件Course.hbm.xml为。 9.4 动态类的使用 ? 配置映射文件。 使用动态类,不需要编写POJO类,仅仅需要把映射文件的class标签属性稍做修改。例如,在讲解Hibernate的第一个程序中,使用了User.java作为持久化类,将User.hbm.xml映射文件作为POJO类和持久化类的映射文件,如果使用了动态类,则不需要编写User.java持久类,把class标签的属性name修改为entity-name,意思是指明由xml解析器生成动态类。修改为应用动态类后的User.hbm.xml文件为: ??xml version=1.0? !DOCTYPE hibernate-mapping PUBLIC -//Hibernate/Hibernate Mapping DTD 3.0//EN /hibernate-mapping-3.0.dtd hibernate-mapping class entity-name=org.vo.User table=userTable id name=id column=id type=integer generator class=identity/generator /id property name=username type=string column=username/property property name=password type=string column=password/property /class /hibernate-mapping 9.4 动态类的使用 ? 数据的存取。 完成了映射文件的定义,接下来需要知道如何对User对象进行数据存取操作了。在应用动态类时,对数据的存取与使用实体类不同。 默认情况下,Hibernate的工作模式为一般的POJO,也可以把sessionFactory的默认实体模式设置为动态模型。如果不设置整个sessionFactory的实体模式,也可以单独设置某个Session的实体模式,例如: ?session=sessionFactory.openSession(); session=session.getSession(EntityMode.MAP); ?EntityMode是选择实体模式的类,EntityMode.POJO代表一般的POJO类模式,EntityMode.MAP代表动态类模式。实际上,即使不做实体模式的设置,Hibernate也能识别出动态类模式,Session对于动态类的增、删、改等一组操作,增加了一个String类型的参数,用于指明类的全名,所以在存取动态类调用这组方法时,Session就可以判断是否为动态模式。 9.4 动态类的使用 对于动态类的操作,Hibernate是通过使用哈希表的形式来存放实体属性的。例如,保存一个User类对象: ?//保存一
文档评论(0)