1. 当两方都为游离对象时,在HIBERNATEDAO中保存父方(saveFather),hibernate会级联保存子方,把set元素inverse属性设置为true,把cascade属性值设为all或者根据具体情况来设置,关系由子方来维持可以优化数据库的操作性能。当只是子方为游离对象时,而父方已经为持久对象,为了保存子方和建立双方的关联关系,需要先查找对应的父方,并保存子方(saveChilren)即可。
2.删除父方会级联删除子方,直接使用delete(father),而删除子方之前需要调用Children.setFather(null)来解除父子的关联关系,再用delete(Children)来删除子方。
3.在多对一关系中,如果双方的关联关系由子方来维持(即set元素中inverse属性值为true),如果在应用程序中以保存子方(save(Children))的方式进行(也对双方进行了关联操作,像这样,Children.setFather(father),Father.getChildren.add(Children) ),这时如果在子方的表中设置的Father_id不允许为null,则程序在运行时会抛出异常,因为hibernate在持久话Children时不会级联持久化Father,即在father表中找不到对应的Father_id,当然,此时如果设置Children表中的Father_id列允许为null就不会出现上面的问题,但是这样不利于维护也没有体现父子方的关系.所以一般把set元素中的cascade属性值设置为all或者all-delete-orphan,然后以save(Father)的方式来进行级联保存
4.在第3点中,如果关系由父方来维持,即inverse属性值为false(一般不这样做,就像皇帝和子民的关系一样,由皇帝来选择哪一些是他的子民,倒不如众多子民来选择哪一个是他的皇帝来的方便和容易),而级联保存采用save(Father)的方式,如果没有显示设置父子双方的关联关系,即像Children.setFather(father),Father.getChildren.add(Children)这样,hibernate也不会级联保存子方.
5.执行关联查找时,父亲的标签中的key column属性值一定要和孩子的标签中的column属性值相等,并且父表的主键id名称和子表的主键id名称最好不要相同。
6.当使用迫切左外连接时查找到的结果是一个对象,而使用左外连接时查找到的结果是一个对象数组。
7.father.addToChildren(children);
children.setFather(fathder);
分享到:
相关推荐
**Java Persistence API (JPA)** 是一种用于管理Java应用中的关系型数据库的标准API。它的主要目的是为了提供一套统一的、可移植的对象-关系映射(ORM)解决方案。JPA允许开发者使用JDK 5.0注解或XML文件来描述实体...
总结,Hibernate的关联关系解除是ORM中重要的一部分,通过理解源码、使用工具以及实践操作,我们可以更好地管理和控制实体间的关联,保证数据的准确性和应用的高效运行。在进行关联解除时,务必考虑到业务逻辑、数据...
Spring MVC和Hibernate是JavaEE开发中非常流行的框架,分别用于实现MVC设计模式和提供ORM(对象关系映射)功能。整合这两种技术可以提高开发效率,增强系统的可维护性和扩展性。 首先,Spring MVC是一个强大的MVC...
16. 示例:父子关系:文档中会包含一个关于如何处理父子关系映射的例子,这是对象模型中常见的关系映射挑战。 17. 示例:Weblog应用程序:这部分将通过一个Weblog应用程序的例子来展示如何使用Hibernate进行数据库...
《Hibernate中文参考手册》是Java开发领域中关于Hibernate框架的重要学习资源,主要涵盖了Hibernate的中文API及详尽的参考信息。Hibernate是一个开放源代码的对象关系映射(ORM)框架,它极大地简化了Java应用程序对...
通过Hibernate的实体类,我们可以将这些表映射为Java对象,实体类中的属性对应表中的字段,关联关系通过注解或XML配置文件来定义。 接着,我们使用Hibernate的Session接口进行数据操作。Session是与数据库会话的...
这是struts2 +hibernate +spring+ext js 完整的java 客户关系管理系统项目源码 可以直接导入eclipse、myeclipse。内附数据库文件 mysql版,也可改成其它数据库, 换对应数据库连接驱动和修改sql语法即可
在"struts2+hibernate3.3图书管理系统"项目中,这两个框架协同工作,实现图书的增删改查功能。Struts2负责接收用户的HTTP请求,调用Hibernate管理的业务逻辑,对图书信息进行操作,并将结果呈现给用户。Hibernate则...
在成绩管理系统中,Hibernate3主要负责管理数据库的连接,将Java对象和数据库表之间的映射关系进行自动处理,大大减少了手动编写SQL语句的工作量。通过配置文件,我们可以定义实体类与数据库表的对应关系,实现对象...
描述中的"hibernate orm框架api中文文档,学习资料,框架详解资料"进一步明确了这些资源的性质,即它们是关于Hibernate ORM框架的API文档、学习教程以及框架的详细解释,都是中文版本,方便中文读者学习。...
《Hibernate中文参考文档》是Java开发领域中关于Hibernate框架的重要学习资源,主要涵盖了Hibernate 3.6.10版本的相关内容。Hibernate是一个开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在Java应用程序...
标题"hibernate中文帮助文档"表明了这是一份关于Hibernate的中文参考资料,Hibernate是一个流行的开源对象关系映射(ORM)框架,用于Java开发,它简化了数据库操作,使得开发者可以使用面向对象的方式处理数据库事务...
在学生管理系统中,所有关于学生的数据(包括姓名、学号、班级等)都会存储在MySQL的表中。通过Hibernate,我们可以方便地进行CRUD(创建、读取、更新、删除)操作。 **5. 用户管理** 虽然标题提到的是“学生管理”...
Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者在Java对象和数据库记录之间建立映射,从而简化数据库编程。这篇“Hibernate中文文档 HTML格式”提供了丰富的关于Hibernate的知识,便于中文用户...
在物业管理系统中,Hibernate可以用来管理物业信息、业主信息、缴费记录等各种数据。通过配置XML映射文件,Hibernate可以自动将Java对象和数据库表进行映射,实现了数据的持久化。这样,开发者只需要关注业务逻辑,...
在权限管理中,通常涉及用户(User)、角色(Role)和权限(Permission)三个主要概念。在Hibernate中,我们可以创建对应的实体类,并使用注解来描述它们与数据库的映射关系。例如: ```java @Entity public class ...
《图书管理系统spring+struts+hibernate》是一款基于Java技术栈开发的图书管理软件,其核心框架包括Spring、Struts和Hibernate。该系统利用MySQL作为数据库存储数据,提供了完整的数据库备份,确保了数据的安全性与...
以下是关于这些技术及其在权限管理中应用的详细知识点: 1. **SpringMVC**: SpringMVC是Spring框架的一个模块,专门用于处理Web应用程序的请求-响应模式。它通过DispatcherServlet接收HTTP请求,然后根据请求映射...
在Hibernate中,这种继承关系也可以被映射到数据库,如单表继承、联合继承和表-per-hierarchy等策略。 12. **延迟加载(Lazy Loading)**:为了提高性能,Hibernate支持属性和关联的延迟加载,即只有在真正需要时才...
4. **JTASession管理**:在支持JTA(Java Transaction API)的环境中,Hibernate可以集成JTA事务管理器,提供分布式事务支持。 #### 三、架构与工作原理 Hibernate的核心架构主要包括以下几个层次: 1. **概览**...