`
fengfan2008
  • 浏览: 96591 次
  • 性别: Icon_minigender_1
  • 来自: 南京市
社区版块
存档分类
最新评论

SSH问题及解决之二 级联配置

阅读更多
系统开发过程中采用Hibernate+JPA: 在一个Group与Resource之间存在多对多的关系:
1. 我的做法是在第三个关系类GroupResource中这样的配置:
@Column(name="work_group_id")
private Integer groupId;//常规的
@JoinColumn(name = "resourceId", referencedColumnName = "resourceId")
@OneToOne(cascade = CascadeType.PERSIST, fetch=FetchType.LAZY)
private Resource resource;//关系表中每一行的resourceId唯一对应一个Resource, 我是这么理解的.

2. 这样做的好处:
cascade = CascadeType.PERSIST: 这样在新增一个GroupResource时就不会同时执行更新Resource了(虽然数据不会出错,但多执行了一条SQL语句总觉得不适合.) , 而且Resource发生变化时也能及时的反馈到关系表的列表显示页面.
对于fetch=FetchType.LAZY, 我试了下一个Group有五个关联的GroupResource,其中有两个Resource是一样的, 那么通过hql的输出可以看出, 执行了4次Select * from Resource的操作, 而换成FetchType.EAGER, 观察了下还是执行了4次, 没有发现有多大区别, 望知情人告知.

3. 相关配置的解释:
* cascade表示级联操作  
* CascadeType.MERGE级联更新:若items属性修改了那么order对象保存时同时修改items里的对象。对应EntityManager的merge方法  
* CascadeType.PERSIST级联刷新:获取order对象里也同时也重新获取最新的items时的对象。对应EntityManager的refresh(object)方法有效。即会重新查询数据库里的最新数据  
* CascadeType.REFRESH级联保存:对order对象保存时也对items里的对象也会保存。对应EntityManager的presist方法  
* CascadeType.REMOVE级联删除:对order对象删除也对items里的对象也会删除。对应EntityManager的remove方法  
* FetchType.LAZY表示懒加载。对于xxxtoMany时即获得多的一方fetch的默认值是FetchType.LAZY懒加载。对于xxxtoOne时即获得一的一方fetch的默认值是FetchType.EAGER立即加载  
0
0
分享到:
评论

相关推荐

    ssh+dwr 3级联

    综上所述,"ssh+dwr 3级联"是一个结合了安全的远程服务和实时Web交互的解决方案,它在三层架构的Web应用中具有广泛的应用价值。开发者需要掌握SSH和DWR的原理及使用方法,以便在项目中有效地实现这种技术组合。

    SSH框架网上商城项目第19战之订单信息级联入库以及页面缓存问题

    综上所述,解决SSH框架网上商城项目中的订单信息级联入库,主要是通过Hibernate的级联保存特性,正确设置实体类的注解和业务逻辑,确保关联数据一同保存。而对于页面缓存问题,需要根据实际情况选择合适的策略,如...

    hibernate 级联查询

    博主可能通过具体的例子展示了如何配置和使用级联查询,以及可能遇到的问题和解决方案。 **标签解析:** 1. **源码** - 暗示内容可能涉及Hibernate框架的内部实现,可能会讲解到相关的Java代码或者XML配置文件,...

    SSH面试及笔试试题

    5. **如何解决Hibernate的级联操作引发的效率问题**(合理设置fetch mode,避免不必要的查询) 掌握SSH框架不仅有助于开发者理解MVC架构,还能在面试中展现扎实的技术基础,提升竞争力。在实际项目中,SSH框架可以...

    ssh框架开发包

    总的来说,SSH框架为Java Web开发提供了一套完整的解决方案,涵盖了应用的控制层、模型层和持久化层。通过合理利用SSH框架,开发者可以更加专注于业务逻辑的实现,而无需过多关注底层的实现细节,大大提高了开发效率...

    ssh_employee

    在员工管理系统中,SSH(Spring、Struts2和Hibernate)是一个常见的Java Web开发框架组合,用于构建高效、可维护的企业级应用。...在SSH框架下,理解和解决级联操作的问题是提升系统稳定性和效率的关键一步。

    SSH框架分页~及增查

    对于增删改查(CRUD)操作,SSH框架提供了一套完整的解决方案: - **创建(Create)**:用户提交新数据,Action接收后调用Service,Service再调用DAO将数据保存到数据库。 - **读取(Read)**:用户请求数据,...

    SSH框架帮助文档

    学习SSH框架,你需要掌握如何配置这三大框架的XML配置文件,理解它们之间的协作机制,如Spring如何管理Struts2和Hibernate的Bean,以及如何在Struts2和Hibernate之间传递数据。此外,还需要熟悉Java EE 5的相关技术...

    ssh_crm1.rar

    - 解决问题:hibernate多对多配置实现方式 第四个 综合查询模块 (1)客户条件查询 - 多条件组合查询 第五个 统计分析模块 (1)根据来源进行统计分析 - 使用hibernateTemplate调用底层sql

    Maven ssh整合框架

    Maven SSH整合框架的优势在于提供了完整的开发解决方案,简化了项目构建和依赖管理,提高了开发效率。同时,SSH各组件间的协同工作使得业务逻辑、控制层和表现层分离,代码结构清晰,易于维护。此外,由于SSH都是...

    SSH之Hibernate总结

    SSH之Hibernate总结 SSH(Struts、Spring、Hibernate)是Java Web开发中常见的三大框架,而Hibernate作为ORM(对象关系映射)框架,是连接Java应用程序与数据库的关键组件。本总结将围绕Hibernate的核心概念、配置...

    SSH框架架包

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个框架集合提供了模型-视图-控制器(MVC)架构模式,依赖注入(DI),面向切面编程(AOP)以及持久化管理等核心功能...

    SSH 全选反选批量删除

    解决这些问题需要对SSH框架、MySQL语法、前端技术以及数据库优化有深入理解。 文件名"delete2many"可能暗示这是一个关于处理一对多关系的删除操作。在Hibernate中,如果实体存在一对多关联,删除父对象时需要考虑...

    SSH三大框架整合jar包下载

    SSH三大框架,即Spring、Struts2和Hibernate,是Java Web开发中常用的一套集成解决方案。这三大框架分别负责不同的职责:Spring作为IoC(Inversion of Control)和AOP(Aspect Oriented Programming)容器,提供了...

    ssh集成框架

    SSH(Struts2 + Spring + Hibernate)是一种在Java Web开发中广泛应用的开源集成框架,它整合了三个...随着技术的发展,SSH已经被Spring Boot等更现代的框架所取代,但在许多现有项目中,SSH仍然是稳定可靠的解决方案。

    基于SSH的网上商城1

    在编程实现过程中,需要搭建开发环境,引入SSH框架所需的配置文件和jar包,配置C3P0连接池、SessionFactory以及事务管理。为了应对高并发,可以考虑使用NIO、多线程同步机制、线程池以及数据库优化策略,如SQL优化、...

    ssh框架搭建源码

    在这个"ssh框架搭建源码"的资源中,你将找到关于如何配置和运行SSH框架的详细步骤。 Spring框架作为核心,它负责管理应用程序的业务对象和数据访问对象,提供了依赖注入(DI)和面向切面编程(AOP)的功能,使得...

    (SSH)轻量级框架文档

    SSH,即Struts、Hibernate和Spring,是Java开发中常用的一个轻量级Web应用程序框架,也被称作...对于初学者,这些文档是学习SSH框架的关键参考资料,而对于有经验的开发者,它们同样能提供解决问题和优化应用的思路。

    面试中常问到的问题ssh

    1. **ORM 解决方案**:Hibernate 是一个流行的 ORM(对象关系映射)框架,解决了 Java 程序与数据库交互的繁琐问题,将对象状态保存和恢复简化为简单的 API 调用。 2. **JDBC 替代**:通过 Hibernate,开发者不再...

Global site tag (gtag.js) - Google Analytics