`
dontsan
  • 浏览: 40810 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类

大家讨论一下JavaEE设计,业务方法要不要写到实体类里面

阅读更多
最近看了一篇Evans关于DDD文章,他极力主张将业务方法写在实体中,这样才真正符合OO的原则。想想也对。例如我们不应该写一个订单处理业务类,而是将相关方法直接写进订单实体里面。像计算总价,order.getTotalAmount()就可以了;不用orderService.getTotalAmount(order).但是这样在具体实践中可能会有问题。业务方法有时需要用到其他的由Spring或者容器注入的其他bean。而我们的实体类的实例都是orm框架提供的,这之间怎么wire呢?大家能不能讨论一下。
0
0
分享到:
评论
5 楼 dontsan 2009-08-07  
PoEAA讲到这种设计模式就是Domain Model.而将实体和逻辑分开的做法有点像Transaction Script.
4 楼 dontsan 2009-08-07  
qichunren 写道
你out了,看看ActiveRecord


谢谢。我看了一下ActiveRecord定义。

http://martinfowler.com/eaaCatalog/activeRecord.html

An object carries both data and behavior. Much of this data is persistent and needs to be stored in a database. Active Record uses the most obvious approach, putting data access logic in the domain object. This way all people know how to read and write their data to and from the database.

他提到将数据和行为封装到一个类里面,但后面又讲到是将数据和数据访问逻辑放在一起。还没有见到应用实例。

3 楼 dontsan 2009-08-06  
linhong_1001 写道
这是职责与粒度的问题,难道有什么冲突么,你设计一个账户类,他可以存款也可以取款,但是如果是一个转账业务呢

我会这样设计:转账有转帐业务的实体类,调用涉及到的两个帐户上的借贷方法。
我的意思是,如果这两个帐户实体类由orm框架管理,可不可以方便地注入其它实体或者业务bean?
2 楼 qichunren 2009-08-05  
你out了,看看ActiveRecord
1 楼 linhong_1001 2009-08-05  
这是职责与粒度的问题,难道有什么冲突么,你设计一个账户类,他可以存款也可以取款,但是如果是一个转账业务呢

相关推荐

    javaee编写小bbs

    在BBS应用中,我们可以通过JPA定义实体类(如User、Thread、Post),然后使用CRUD(Create、Read、Update、Delete)操作与数据库进行交互。 6. **会话管理** 在论坛中,用户登录后可能需要保持状态,这就涉及到了...

    JavaEE轻量级框架6个实验报告

    实验内容包括配置Hibernate,创建实体类,编写DAO,最后在Action中调用DAO方法进行CRUD操作。实验总结将讨论Struts 2与Hibernate结合带来的便利,以及在实际项目中的最佳实践。 通过这六个实验,学习者可以系统地...

    基于JavaEE的鸡场养殖管理系统_JSP网站设计_SqlServer数据库设计.rar

    综上所述,基于JavaEE的鸡场养殖管理系统是一个涵盖了前端展示、后端处理、数据库设计等多个方面的综合项目,它体现了Web开发中的多种技术和方法。通过这样的系统,可以有效地管理和优化鸡场的运营,提高工作效率。

    bbs.rar_JavaEE

    1. `src/main/java`:Java源代码目录,包含了业务逻辑、实体类、控制器和其他服务。 2. `src/main/resources`:存放静态资源、配置文件(如数据库连接配置、Struts配置文件)等。 3. `src/main/webapp`:Web应用的根...

    学习JavaEE的day22

    3. **MVC模式**:Model-View-Controller模式是JavaEE开发中常见的设计模式,用于分离业务逻辑、数据模型和用户界面。你可能已经接触了如何使用Servlet作为Controller,JavaBeans作为Model,JSP作为View来实现这一...

    javaee的hibernate

    为了将实体类与数据库表关联,还需要创建一个映射文件(`.hbm.xml`)或者使用注解方式(更现代且推荐)。映射文件描述了对象和表之间的关系,包括字段映射、主键生成策略等。 在Java代码中,你需要通过`...

    javaEE 论坛系统

    JavaEE论坛系统是一种基于Web的在线讨论平台,它利用了Java企业版(JavaEE)的框架和技术来构建。本系统采用流行的"SSH"架构,即Struts 2、Spring和Hibernate三大框架的组合,旨在提供高效、稳定且易于维护的讨论...

    简单论坛系统(struts2+hibernate)

    用户信息可能被映射到一个User实体类,与数据库中的users表相对应。 2. 帖子模块:用户创建、查看、回复帖子。每个帖子对应一个Post实体,包括标题、内容、作者等字段。Hibernate会处理帖子的CRUD(创建、读取、...

    JavaEE企业培训方案1.pdf

    还包括数据库事务、并发控制、缓存管理、继承关系映射、Java集合类、值类型集合、实体关系映射和高级配置。同时,讲解了Hibernate与Struts的集成以及实战经验。 4. **JAVA EE系统业务层实现—-采用Spring框架**:这...

    基于SSM的教资考前指导系统 Javaee项目 ssm项目

    - 编写实体类和Mapper接口:对应数据库表的Java对象和MyBatis的SQL映射。 - 实现Service层:定义业务逻辑,通过Spring管理相关组件。 - 创建Controller层:处理HTTP请求,调用Service层方法,返回响应结果。 - 测试...

    基于struts2、spring、hibernate构建一个网上投票系统—-毕业论文设计.doc

    这些实体类不仅包含了数据属性,还可能包含一些业务方法。 三、结论和体会 3.1 结论 论文最后会总结整个项目的实施效果,评估系统是否满足了预设的需求,以及在开发过程中遇到的问题和解决方案。此外,还会讨论所...

    Java EE企业级应用开发案例-CRM系统

    10. **数据库设计**:CRM系统可能包括客户表、联系人表、订单表等,每个表都有相应的实体类对应。数据库设计需要遵循关系数据库的原则,如范式理论,确保数据的一致性和完整性。 11. **前端技术**:尽管未在描述中...

    基于springboot的新型电脑商城系统(有报告) Javaee项目,springboot项目

    6. **Model层** - 定义实体类,对应数据库中的表。 7. **视图层** - 如果是MVC模式,可能包含Thymeleaf或Freemarker等模板引擎的页面。 8. **安全配置** - Spring Security用于用户认证和授权。 9. **支付接口** - ...

    基于Springboot的课程答疑系统(有报告) Javaee项目,springboot项目

    3. **数据库设计**:定义实体类,如Question、Answer、User等,配置数据源并编写Repository接口。 4. **服务层开发**:实现业务逻辑,包括问题的创建、回答、搜索等功能。 5. **控制器层**:编写处理HTTP请求的...

    J2EE5 NetBeans教程

    - 分别使用JavaEE5的`@Entity`标注和J2EE1.4的CMP来创建实体类,并对比这两种方式的特点。 **总结** JavaEE5相比之前的J2EE1.4版本,在简化开发流程、提高开发效率方面做了大量的改进。通过引入标注来替代复杂的...

    s2sh远程教育系统

    6. **开发与部署**:开发过程中,开发者需要编写Action类、Service接口及实现、DAO接口及实现、以及相应的实体类。测试完成后,整个系统可以通过Tomcat或Jetty等Web服务器进行部署,以供用户访问。 7. **优化与扩展...

    J2EE核心模式第二版

    12. **模板方法模式**:定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 书中详细解释了每个模式的动机、结构、参与者、协作方式以及优...

    3、前置知识pdf资料

    4. 控制器层:控制器接收用户的请求,解析请求数据,调用业务逻辑层的方法,并根据结果决定如何响应用户,例如转发到不同的视图。 5. 表现层:这一层主要由视图技术构成,如JSP、Velocity或PDF,它负责展示数据给...

    物流管理系统

    物流管理系统是一个专为本科毕业生设计的项目,旨在帮助初学者理解和掌握实际的软件开发流程,特别是在物流行业的应用。这个系统通常包含多个模块,用于管理货物的接收、存储、运输和配送,以及相关的订单处理、客户...

    参考论文8-基于SSH在线拍卖系统设计与实现.doc

    3.1 **系统构架概述**:系统基于JavaEE的三层架构设计,包括表现层、业务逻辑层(中间层)和数据服务层(持久层)。表现层负责用户交互,中间层处理业务逻辑,数据服务层负责数据存储和检索。 3.2 **开发环境**:...

Global site tag (gtag.js) - Google Analytics