`
yueguangyuan
  • 浏览: 335756 次
  • 性别: Icon_minigender_1
  • 来自: 新加坡
社区版块
存档分类
最新评论

[讨论]有关Spring+Hibernate更新数据库的操作

阅读更多

最近老和同事争执一个Spring+Hibernate更新数据库的问题,由于使用Spring控制Hibernate事务,所以我的Service层很简单:

public class CompanyServiceImpl implements CompanyService {

 private CompanyDao companyDao;

 public void setCompanyDao(CompanyDao companyDao) {
  this.companyDao = companyDao;
 }
 public void updateCompany(Company company) throws BusinessException {

  try {
   companyDao.updateCompanyInfo(company);
  } catch (DataAccessException dae) {
   throw new BusinessException("error.data.access");
  }
 } 

一个很普通的调用Dao的方法,但是我这个同事说必须考虑并发的问题,如果两个人同时操作,一个人将这个对象删除了,而另一人去更新肯定要出错。

所以他的写法:

sychronized(this){

try {

Company company= compnayDao.getCompanyByFK(String id);

company.setCompanyName("111");
   companyDao.updateCompanyInfo(company);
  } catch (DataAccessException dae) {
   throw new BusinessException("error.data.access");
  }

}

它的做法是在更新之前将对象取出,然后只更新相应的字段,这样就已经增加了一次数据库操作(不过我认为这个在某些时候哦还是可以接受的,如工作流),但是他又加上了同步……

争来争去也没有结果,我也不知道有什么更好的办法,的确同步的问题在B/S架构中是很令人头疼的事情,这个涉及到脏数据读取的问题也是有很多解决办法,Spring的事务管理就可以处理,但是我还不知道怎么用。我觉得我的方法已经可以处理,因为捕获了DataAccessException 异常,或者我也可以在可预知的情况下捕获其他异常进行识别,但是这样也比较复杂,也很可能因为某些原因无法达到效果。

所以在这里提问,希望大家都来讨论一下,你认为怎样做或者你的项目中对于脏数据、并发访问控制和处理的解决方法。



 

分享到:
评论

相关推荐

    struts+spring+hibernate

    Struts、Spring 和 Hibernate 是Java开发中非常著名的三个开源框架,它们构成了经典的“SSH”(Struts + Spring + Hibernate)企业级应用开发架构。这个架构为开发者提供了模型-视图-控制器(MVC)设计模式的实现,...

    车辆管理系统(struts+hibernate+spring+oracle).rar

    综上所述,车辆管理系统利用Struts处理用户交互,Hibernate管理数据库持久化,Spring提供依赖注入和事务管理,而Oracle数据库则存储所有车辆相关数据。这样的架构设计保证了系统的高效运行和可扩展性,为车辆管理...

    struts2+spring+hibernate+mysql(eclipse)整合增删改查

    2. **导入依赖**:在项目的pom.xml文件中添加Struts2、Spring、Hibernate和相关依赖库。 3. **配置Struts2**:编写struts.xml配置文件,定义Action类及其对应的URL、结果页面等。同时,需要配置Struts2与Spring的...

    Spring+Dwr+Hibernate整合项目

    4. **前后端交互**:前端JavaScript通过DWR调用后端的Java方法,这些方法由Spring管理并可能涉及Hibernate操作。数据在服务器和客户端之间以JSON格式传递,实现了高效的数据交换。 **项目结构** 从压缩包文件名"DWR...

    现有Mysql数据库,写Spring + Hibernate的配置文件

    在本场景中,我们将讨论如何在现有MySQL数据库环境下,配置Spring和Hibernate来实现数据访问。 首先,我们需要在项目中引入Spring和Hibernate的相关库。通常,这可以通过在`pom.xml`(如果你的项目使用Maven)或`...

    轻量级Java+EE企业应用实战——Struts+2+Spring+Hibernate整合开发电子书3.pdf

    1. 搭建集成环境:介绍如何配置Struts 2、Spring和Hibernate的项目结构,以及相关的XML配置文件,如struts.xml、spring-context.xml和hibernate.cfg.xml。 2. 实现数据持久化:讲解如何使用Hibernate的注解或XML配置...

    Spring+Struts+Hibernate框架BBS源码

    Spring作为整体应用的管理容器,负责依赖注入(DI)和面向切面编程(AOP),Struts作为MVC(模型-视图-控制器)架构的实现,处理用户的请求和展示逻辑,而Hibernate则作为持久层框架,管理数据库操作。 **Spring...

    spring3+hibernate3+proxool+mysql 超级企业J2EE DEMO(jar在下一个文件中,jar太大了)

    本项目采用当前主流的MVC和IOC框架spring 3、优秀的ORM框架hibernate和超级厉害的proxool数据库连接池。这个工程demo,是本人在企业应用中的项目缩影,绝对实用于企业的应用。 适合朋友: 1.一直用单独的servlet和...

    基于Struts 2+Hibernate+Spring实现论坛系统

    这个基于Struts 2+Hibernate+Spring实现的论坛系统,充分利用了这些框架的优势,为用户提供了交互性强、数据管理高效的在线讨论平台。 首先,Struts 2 是一个 MVC(Model-View-Controller)框架,它负责处理用户的...

    全套源码-论坛系统(Struts 2+Hibernate+Spring实现)

    【标题】:“全套源码-论坛系统(Struts 2+Hibernate+Spring实现)”揭示了一个基于Java技术栈开发的论坛系统,它整合了三个重要的框架:Struts 2、Hibernate和Spring。这个项目旨在提供一个完整的解决方案,帮助...

    Xfire配置Web Service+Spring+Hibernate详细配置流程

    接着,通过Spring的DAO模板(如JdbcTemplate或HibernateTemplate)将ORM操作委托给Hibernate,这样可以避免直接在业务逻辑代码中处理数据库细节。 5. **Web服务配置**: 要实现Web服务,Spring需要配置一个Servlet...

    spring+hibernate 分页 +mysql

    这里我们讨论的是结合Spring、Hibernate和MySQL实现的分页功能,这是一个常见的技术栈组合,广泛应用于Web应用开发。 Spring是一个开源的Java框架,它提供了全面的编程和配置模型,用于构建企业级应用。Spring的IoC...

    通用开发平台(spring mvc + spring + bootstrap + hibernate)

    在实际开发中,Spring MVC处理HTTP请求,Spring负责管理对象和提供服务,Hibernate处理数据库操作,而Bootstrap则用于美化用户界面,实现响应式设计。这样的组合使得开发过程更为高效,同时减少了开发错误和调试时间...

    Spring+Hibernate+Proxool连接池

    标题“Spring+Hibernate+Proxool连接池”意味着我们将讨论如何将这三大组件集成在一起,以构建一个高效且可扩展的Java Web应用。Spring作为容器,负责管理对象的生命周期和依赖关系;Hibernate则作为一个ORM(对象...

    spring mvc + spring + hibernate 全注解整合开发视频教程 09

    【标题】"Spring MVC + Spring + Hibernate 全注解整合开发视频教程 09" 提供了一次深入了解Java企业级应用开发的机会,特别是在使用Spring MVC、Spring和Hibernate这三大核心框架进行全注解配置的场景下。...

    Spring+Hibernate+Struts

    "spring_hibernate_1"和"spring_hibernate_2"可能讲解了Spring与Hibernate的整合,如何通过Spring的HibernateTemplate或HibernateJpaTemplate进行数据库操作,以及事务管理如何在两者之间协同工作,确保数据的一致性...

    Spring+struts+hibernate整合图解

    通过Hibernate,开发者可以将Java对象映射到数据库表,使用简单的对象方法进行CRUD(创建、读取、更新、删除)操作,而不必编写繁琐的SQL语句。Hibernate支持HQL(Hibernate查询语言)和Criteria API,使得查询更加...

    Flex+spring+hibernate

    当Flex、Spring和Hibernate结合在一起时,通常会形成这样的架构:Flex作为前端展示,通过AMF与Spring应用服务器通信,Spring管理业务逻辑并调用Hibernate进行数据持久化操作。下面,我们将详细讨论这种整合方式: 1...

Global site tag (gtag.js) - Google Analytics