`

不建议把po直接应用于表现层,强烈建议把po和vo分开使用

po 
阅读更多

不建议把po直接应用于表现层,强烈建议把po和vo分开使用

UserAction.java
/** 保存 */
public ActionForward save(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response) { 

 
 UserPo usrPo=userService.getUserByUserId(userId);
 
 LazyValidatorForm stationForm = (LazyValidatorForm)form;

 /** ====================(1)====================  */
 userPo.setAccount=(String)form.get("account");
 userPo.setUserName=(String)form.get("userName");  
 userPo.setSex=(String)form.get("sex");
 userPo.setPassword=(String)form.get("password");
 userPo.setTel=(String)form.get("tel");

 /** 判断用户帐号是否已存在  */
 if(isExsit(userPo.getAccount())){
  /** 存在则不保存 */
 }else{
  /** 不存在保存 */
  userService.saveUser(userPo);
 }
}

请注意上面的代码是否会出现问题呢?
我们来分析一下:
当用户帐号存在时按程序的逻辑是不会保存你所更改的内容的,但是因为(1)处已先将po的相关属性值set成了最新表单form中的内容了
,此时的po是调用服务getUserByUserId(userId)则它是一个持久对象,所以它是具有状态,即使按上面程序的逻辑并没有调用保存用户的方法,
但它的相关属性也会被更改.

原国很简单就是你对一个持久的对象(具有状态)进行了操作,所以一定要小心使用!

分享到:
评论

相关推荐

    po与vo区别.doc

    - PO可能需要主键标识,但VO不一定。 - PO和VO的构造方法、继承性等设计细节可能因项目需求而异。 了解并正确使用PO和VO可以帮助我们更好地组织代码,提高代码的可维护性和可扩展性。在实际开发中,应根据项目需求...

    po vo dto bo to

    - 在实际开发中,PO对象常用于封装数据层查询或修改的结果,便于在其他层(如业务逻辑层或表现层)使用。 #### 三、VO (Value Object) 值对象 **定义:** - VO是一种只包含数据属性的简单Java对象,通常用于封装...

    关于VO、PO的理解——java的(PO,VO,TO,BO,DAO,POJO)解释

    与 PO 不同,VO(Value Object)是值对象,它是业务对象,是存活在业务层的,是业务逻辑使用的。VO 的属性是根据当前业务的不同而不同的,也就是说,它的每一个属性都一一对应当前业务逻辑所需要的数据的名称。 PO ...

    Oracle 自动生成POVO工具

    在实际应用中,开发者还可以结合其他开发工具,如Maven或Gradle,将POVO工具集成到构建流程中,实现自动化构建和部署。这样可以进一步提升项目的开发效率和质量。 总之,Oracle POVO工具是Java开发中的得力助手,它...

    vopo转换工具类及所需jar

    在IT行业中,我们经常需要处理各种数据转换任务,特别是在Java编程环境下。"vopo转换工具类及所需jar"是一个特定的项目,它提供了一个...在实际应用中,理解并熟练使用这类工具,对于提升开发效率和代码质量至关重要。

    Java的(PO,VO,TO,BO,DAO,POJO)解释

    本篇文章将对Java中的PO、VO、TO、BO、DAO、POJO等概念进行详细的解释,帮助读者更好地理解和应用这些技术。 PO(Persistant Object)持久对象 PO是Java中的一种重要概念,表示持久对象。在O/R映射中,PO通常对应...

    JAVA中的POJO、VO、PO、DO、DTO都是什么?有什么区别?

    3. VO(View Object):视图对象,主要用于表现层,如JSP页面或Web服务的响应。VO包含了展示数据所需的所有属性,通常不含任何业务逻辑,只用于数据的展示。它们是将数据从服务层传递到前端展示时使用的中间对象,...

    java术语(PO/POJO/VO/BO/DAO/DTO)

    在Java开发中,我们经常会遇到各种各样...例如,PO和DAO一起用于数据持久化,BO处理业务逻辑,而VO和DTO则专注于数据的传输和展示。了解这些术语,对于提升代码质量、提高团队沟通效率以及优化系统设计都具有重要意义。

    Java中 PO VO BO DTO DAO 和 POJO 关系图

    Java中 PO VO BO DTO DAO 和 POJO 关系图

    Java的几种对象(PO-VO-DAO-BO-POJO)解释

    总结来说,PO-VO-DAO-BO-POJO这些概念在Java开发中非常常见,每种类型的对象都有其特定的作用和应用场景。理解这些概念有助于更好地设计系统架构,提高代码的可维护性和扩展性。在实际开发过程中,根据项目的具体...

    自身关联的添加、检索及PO到VO得封装、转换

    在IT行业中,自身关联是一种常见的数据库设计技巧,用于表示一个实体可以与其...在实际开发中,这种设计允许构建复杂的数据结构,如树形菜单或权限系统,同时PO到VO的转换是数据层和业务层交互中常见的数据处理方式。

    VO / DTO / BO / ORM DAO entity DO PO/ POJO(分层领域模型规约)整理

    - **应用场景**:当需要展示给用户的信息与服务层处理的数据不完全一致时使用。 - **优势**: - 可以避免敏感信息泄露给前端。 - 更好的控制展示给用户的界面数据。 ##### 3. BO (Business Object) - **定义**:...

    bo,vo,po的区别

    在IT行业中,尤其是在Java开发领域,我们经常遇到“VO”、“BO”和“PO”这样的术语,它们分别代表了Value Object、Business Object和Persistent Object。理解这三个概念对于编写清晰、可维护的代码至关重要。 首先...

    java的几种对象(PO_VO_DAO_BO_POJO)解释

    综上所述,这五种Java对象类型各有侧重,它们共同构建了Java应用的多层次架构,从数据层到业务层再到表现层,每一种对象都在自己的领域内发挥着不可或缺的作用。理解并熟练运用这些对象类型,对于Java开发者来说是至...

    java(PO,VO,BO,DAO,POJO)Explained Collection

    Java开发中,PO(Persistant Object)、VO(Value Object)、BO(Business Object)、DAO(Data Access Object)和POJO(Plain Old Java Object)是常见的五个概念,它们在软件设计和开发中扮演着不同的角色。...

    Oracle PO 审批层次

    Oracle PR 和PO 审批流程,审批层次建立

    Spring的作用贯穿了整个中间层,将Web层、Service层、DAO层及PO无缝整合

    ### Spring框架在中间层的应用与整合 #### 一、Spring框架概述 Spring是一个开源的轻量级Java EE框架,主要用于简化企业级应用的开发过程。它通过提供一系列的基础设施服务,如依赖注入(Dependency Injection, DI...

    SAP PO 流程集成平台介绍

    SAP PO 流程集成平台是一个企业服务总线(ESB)平台,由 SAP 提供,基于 J2EE 架构,基于开放标准,是涵盖 SOA 建模与设计、应用到应用的集成(A2A)、业务到业务的集成(B2B)、以及跨系统业务流程管理的完整解决...

    PCS7的PO授权统计方式

    总的来说,理解PCS 7的PO授权统计方式对于正确配置和管理自动化项目至关重要,因为它直接影响到软件许可证的合规性和成本控制。正确估算和分配PO资源,能确保系统的正常运行,避免因授权不足导致的运行问题。

Global site tag (gtag.js) - Google Analytics