Hibernate的映射机制.ppt
文本预览下载声明
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类对象: ?//保存一
显示全部