现在的位置: 首页 > 综合 > 正文

论Hibernate的实体与表间的关系…

2019年03月08日 ⁄ 综合 ⁄ 共 2688字 ⁄ 字号 评论关闭
一对一关系映射:(xml配置版)
---->>>:外表主键即为外键也为主键,主表主键值和外键主键值一至,外表依赖主表产生记录。
<hibernate-mapping>
<class name="com.lovesmile.oa.entity.Finger"table="FINGERS" schema="LOVESMILE">
<id name="id"type="java.lang.Integer">
<column name="ID" />
<generatorclass="foreign">
<paramname="property">stuff</param>
</generator>
</id>
<property name="fingerone"type="java.lang.String">
<column name="FINGER_ONE" length="100"/>
</property>
<property name="fingertwo"type="java.lang.String">
<column name="FINGER_TWO" length="100"/>
</property>
<property name="fingerthree"type="java.lang.String">
<column name="FINGER_THREE" length="100"/>
</property>
<one-to-one name="stuff"class="com.lovesmile.oa.entity.Stuff"constrained="true"/>
</class>
</hibernate-mapping>
多对一关系映射:(xml配置版)
---->>>:外表主键即为外键也为主键,主表主键值和外键主键值一至,外表依赖主表产生记录。
<?xml version="1.0"encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse PersistenceTools
-->
<hibernate-mapping>
<class name="com.lovesmile.oa.entity.Position"table="POSITIONS" schema="LOVESMILE">
<id name="id"type="java.lang.Integer">
<column name="ID" />
<generatorclass="sequence">
<paramname="sequence">SEQ_USER</param>
</generator>
</id>
<property name="name"type="java.lang.String">
<column name="NAME" length="100"unique="true"/>
</property>
</class>
</hibernate-mapping>
一对一关系简单配置:
<one-to-one name="stuff"class="com.lovesmile.oa.entity.Stuff"constrained="true"/>
前面用hibernateannotation注解进行了实体间的一对一关系的映射,其实双向的和单向的知识有点细节上的差别,在我们映射的时候不需要改动太多,还有就是对mappedBy有进行了解,知道他的作用,在我们使用了mappedBy的时候,两个实体便是双向关联的了,在hibernateannotation的帮助文档中这样描述了mappedBy关键字在双向关联中,有且仅有一端是作为主题端存在的,主题端负责维护连接列(更新),对于不需要维护这种关系的从表则通过mappedBy属性进行声明。mappedBy的值指向主体的关联属性。
     下面要做的是多对多的关系的映射,因为个人认为一对多,多对一与多对多都有着相似之处,所以治理只对多对多进行描述,首先说下这次的模型是学生student和课程course这两个实体,一个学生可以选多门课程,同时,一门课程也可以由多个学生来选,构成了多对多的关系,下面是实体的注解映射与测试类,测试方法在junit单元测试中完成。
多对多关系映射:(xml配置版):需配置中间从表
---->>>:中间表拥有两个实体表的外键,可看做两个mang-to-one的综合体现
<?xml version="1.0"encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse PersistenceTools
-->
<hibernate-mapping>
<class name="com.lovesmile.oa.entity.Teacher"table="TEACHER" schema="LOVESMILE">
<id name="id"type="java.lang.Integer">
<column name="ID" />
<generatorclass="sequence">
<paramname="sequence">SEQ_USER</param>
</generator>
</id>
<property name="name"type="java.lang.String">
<column name="NAME" length="100"/>
</property>
<set name="students" table="STUDENT_TEACHER"inverse="true">
<key column="TEACHER_ID"/>
<many-to-manyclass="com.lovesmile.oa.entity.Student"column="STUDENT_ID"/>
</set>
</class>
</hibernate-mapping>
-->>未完待续...

抱歉!评论已关闭.