`

对方案一的hibernate实现,利用hibernate中的父子关系来解决

阅读更多
对方案一的hibernate实现,利用hibernate中的父子关系来解决:
java文件
public class Party {
	Long partyId;
	String partyRole;
}
public class Person {
	Long id;
	Party party;
	String login;
	String name;
	String sex;
       ......
}
public class Department {
	Long id;
	Party party;
	String name;
	String address;
	......
}
public abstract class PartyRelationship {
	Long id;
	Party partyFrom;
	Party partyTo;	
	String partyRole;		
}
public class PersonRelationship extends PartyRelationship{}
public class DepartmentRelationship extends PartyRelationship{}
public class PersonDepartment extends PartyRelationship{}


hbm.xml文件

<hibernate-mapping package="com.bulain.model">
	<class name="Party" table="party">
		<id name="partyId" column="party_id" type="java.lang.Long" >
			<generator class="native"/>
		</id>
		<property name="partyRole" column="party_role" type="java.lang.String"/>
	</class>
	<class name="Person" table="person">
		<id name="id" column="id" unsaved-value="0"> 
            <generator class="foreign"> 
                <param name="property">party</param> 
            </generator> 
        </id> 
		<one-to-one name="party" class="Party" cascade="all" constrained="true" />  
		<property name="login" column="login" type="java.lang.String"/>
		<property name="name" column="name" type="java.lang.String"/>			
		<property name="sex" column="sex" type="java.lang.String"/>
	</class>
	<class name="Department" table="department">
		<id name="id" column="id" unsaved-value="0"> 
            <generator class="foreign"> 
                <param name="property">party</param> 
            </generator> 
        </id> 
		<one-to-one name="party" class="Party" cascade="all" constrained="true"/>  
		<property name="name" column="name" type="java.lang.String"/>
		<property name="address" column="address" type="java.lang.String"/>
	</class>
	<class name="PartyRelationship" table="party_relationship" abstract="true">
		<id name="id" column="id" type="java.lang.Long">
			<generator class="native"/>
		</id>
		<discriminator column="party_role" type="java.lang.String"/>
		<many-to-one name="partyFrom" column="party_from_id" not-null="true"/>
		<many-to-one name="partyTo" column="party_to_id" not-null="true"/>
		<subclass name="PersonRelationship" discriminator-value="per_per">
			<property name="partyRole" column="party_role" insert="false"
				update="false"/>
		</subclass>
		<subclass name="PersonDepartment" discriminator-value="per_dept">
			<property name="partyRole" column="party_role" insert="false"
				update="false"/>
		</subclass>
		<subclass name="DepartmentRelationship" discriminator-value="dept_dept">
			<property name="partyRole" column="party_role" insert="false"
				update="false"/>
		</subclass>
	</class>
</hibernate-mapping>

对于这个实现所以关系仍在party_relationship这张表中进行维护,通过PersonRelationship、DepartmentRelationship、PersonDepartment这三个子类进行维护。
分享到:
评论

相关推荐

    hibernate中文参考文档

    18. 示例:不同的映射:除了父子关系映射,还可能有其他类型的映射,如多对多关系映射、一对一关系映射等。这里应该会介绍如何处理这些复杂的映射场景。 19. 最佳实践:最后,文档将总结Hibernate开发中的一些最佳...

    hibernate父亲与孩子

    本文将深入探讨“Hibernate父亲与孩子”这一主题,即Hibernate中的多对一和一对多关系映射,以及如何利用Hibernate处理面向对象的树型结果。 在数据库设计中,"父亲"和"孩子"的概念通常对应于实体之间的关联关系,...

    struts2 hibernate 实现无限级联 树形分类

    在这个"struts2 hibernate 实现无限级联 树形分类"项目中,主要目标是创建一个能够展示无限级联的树形分类结构。这种结构通常用于组织层次化的数据,如产品类别、部门结构或者权限角色等。无限级联意味着这个树可以...

    Hibernate+中文文档

    21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...

    hibernate3.2中文文档(chm格式)

    21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...

    Hibernate中文详细学习文档

    21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...

    Hibernate映射树形结构

    总结来说,映射树形结构在Hibernate中是一项重要技能,它涉及到对数据库设计的理解和ORM框架的熟练运用。掌握不同的映射策略以及如何在代码中实现它们,将有助于提升开发效率并优化应用程序性能。通过研究提供的...

    hibernate3.2中文教程

    7. **一对多、多对一、多对多关系**:Hibernate支持多种关系映射,如实体类间的父子关系、一对多关系、多对一关系和多对多关系,通过配置文件或注解设定。 8. **缓存机制**:为了提高性能,Hibernate提供了缓存机制...

    Hibernate 中文 html 帮助文档

    21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...

    struts+hibernate+单表的增删改查

    而Hibernate则是一个全功能的对象关系映射(ORM)解决方案,它极大地简化了数据库操作的复杂度。将Struts2与Hibernate结合使用,可以构建出高效、灵活的应用系统。本文将详细介绍如何利用Struts2和Hibernate实现对单...

    java+Struts+Hibernate实现的无限级树菜单

    本项目利用Java技术栈,结合Struts和Hibernate框架,实现了这一功能。下面将详细介绍这个项目的知识点。 1. **Struts框架**: Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它有助于简化...

    HibernateAPI中文版.chm

    21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...

    hibernate 一对多映射

    5. **双向一对多**:如果在父子类中都定义了引用,记得在`@ManyToOne`和`@OneToMany`注解中互相引用,以建立完整的双向关系。 6. **示例代码**: ```java @Entity public class User { @Id private Long id; ...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    21. 示例:父子关系(Parent Child Relationships) 21.1. 关于collections需要注意的一点 21.2. 双向的一对多关系(Bidirectional one-to-many) 21.3. 级联生命周期(Cascading lifecycle) 21.4. 级联与未保存值...

    java私塾独家首发最新Hibernate4教程

    ### Hibernate4核心知识点详解 #### 一、Hibernate4简介与...通过上述知识点的学习,可以全面了解Hibernate4的核心功能及其在实际项目中的应用技巧,帮助开发者更好地利用Hibernate4来提高Java应用的开发效率和质量。

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     21.5 利用Hibernate的版本控制来实现乐观锁  21.5.1 使用元素  21.5.2 使用元素  21.5.3 对游离对象进行版本检查  21.5.4 强制更新版本  21.6 实现乐观锁的其他方法  21.7 小结  21.8 思考题 第22章 管理...

    Hibernate one-to-many / many-to-one关系映射

    在Hibernate的hbm.xml文件中,一对一关系通过标签,一对多关系通过、、或标签来定义。需要详细指定实体类名、主键列名以及关联的外键列名。 2. 注解配置: 在实体类上直接使用@OneToOne、@OneToMany等注解进行关系...

    Hibernate一对多单向关联映射

    1. **保存**:当创建新的父子关系时,只需在父实体中添加子实体到集合,然后保存父实体即可。Hibernate会自动处理子实体的保存。 2. **检索**:可以通过父实体的引用集合来获取所有子实体。如果需要根据子实体查询...

    Struts_Spring_Hibernate_CRUD操作案例_-分页查询

    这个案例将帮助开发者理解如何在实际项目中结合Struts、Spring和Hibernate完成数据操作,特别是分页查询这一常见需求,提供了一套完整的解决方案。通过学习和实践,可以提升对Java企业级开发的理解和应用能力。

Global site tag (gtag.js) - Google Analytics