定义类的讲究

  • ejb

Enterprise JavaBean(EJB),企业javaBean。是java的核心代码,分别是会话Bean(Session Bean)、实体Bean(Entity Bean)、和消息驱动Bean(MessageDriven Bean)。

  • javaBean

可重用组件,类必须是具体的公开的,具有无参构造器。

  • pojo

Plain Ordinary Java Object,简单的Java对象,普通的javaBean。除了getter、setter,不能有其他业务方法。有时可以作为VO(value-object)或DTO(Data Transfer Object)来使用。


  • entity

持久化,与数据库对应;

实体bean,一般是用于ORM对象关系映射,一个实体映射成一张表,一般无业务逻辑代码。

负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个EntityBean对象相当于创建一条记录,删除一个EntityBean对象会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步。

  • DTO

系统、服务之间交互传输用;

数据传输对象(Data Transfer Object

dto是做表示层(展示给用户)的,而实体是数据对象(表)。表示层dto的是由多个实体构成,或一个实体的一个部分,或多个实体的各个部分的结合体?如果你认为dto没有必要,难道你做数据库的时候,表与页面的展示是一摸一样的吗?不太现实吧。

dto是面向对象的,实体是面向关系数据库。

  • VO(和DTO类似)

前台(APP\WAP\PC)展示用;

作用说明:

1、DTO可以增加或者减少entity的字段,来灵活实现信息传递;

2、VO可以仅向前端传输,页面需展示字段,如pageList等。


关系示例

多模块或单模块的项目而言,清晰的项目结构很重要。

如下,一个项目可以分为许多模块,如common模块和其他模块。

project

  |-- common

  |-- module1

  |-- ...



其中

|-- common

           |--dao

                 |--impl

                 |--*DAO.java

           |--dto

                 |--*DTO.java

           |--domain

                 |--entity

                 |--*Entity.java

可以在resources中单独写mapper.xml


|-- module1

           |--model

                 |--*VO.java

           |--controller

           |--service

           |--interceptor

           |--...

说明:

  1. [controller] controller是从用户接受和发送数据的地方。因此controller中返回结果中的数据类型为*VO类型。
  2. [dao] 那么,mybatismapper中写的sql语句,如select等的返回结果是什么呢?

    可以是entity,可以是DTO。从一张表中查询部分或多表联合查询,就可以返回DTO

整个*mapper.xml*DAO对应,其中每个sql语句的返回类型可以是intListentityDTO等。

@RequestMapping(path = "/list", method = RequestMethod.POST)
public Res<**VO> yourmethoed(){
//<*DTO> = service()...
//DTO转VO,return VO
}

java架构之项目结构(entity / DTO / VO)的更多相关文章

  1. Java Bean、POJO、 Entity、 VO 、PO、DAO

    Java Bean.POJO. Entity. VO , 其实都是java 对象,只不过用于不同场合罢了.    Java Bean: 就是一个普通的Java 对象, 只不过是加了一些约束条件.  声 ...

  2. 当实体类中entity/DTO/VO等类中,有枚举值,应该怎么输出?

    当实体类中entity/DTO/VO等类中,有枚举值,应该怎么输出? 问题: orderStatus 和 payStatus都是枚举类,并且枚举的个数达地10来个,我们不可能在模板页面(jsp/ftl ...

  3. (1)-Android学习笔记之:初识Android系统架构和项目结构

    Android系统架构 Android程序结构 创建一个Android项目,为初学便于理解,将程序项目结构切换为Project模式,项目结构如下 .gradle和.idea:这两个目录下放的都是And ...

  4. Java开发学习心得(三):项目结构

    [TOC] 3 项目结构 经过前面一系列学习,差不多对Java的开发过程有了一定的了解,为了能保持一个良好的项目结构,考虑到接下来要进行开发,还需要学习一下Java的项目结构 下面以两个项目结构为参照 ...

  5. Java中PO、DO、DTO、 VO、 BO、POJO 、DAO、TO的概念

    1.  PO(persistant object) 持久对象 在 O/R 映射的时候出现的概念,如果没有 O/R 映射,没有这个概念存在了. 通常对应数据模型 ( 数据库 ), 本身还有部分业务逻辑的 ...

  6. Java Web项目结构

    Java Web项目结构(一般) 1.Java src 2.JRE System Library 3.Java EE 6 Libraries 4.Web App Libraries 5.WebRoot ...

  7. 15套java架构师、集群、高可用、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩展. ...

  8. java架构师负载均衡、高并发、nginx优化、tomcat集群、异步性能优化、Dubbo分布式、Redis持久化、ActiveMQ中间件、Netty互联网、spring大型分布式项目实战视频教程百度网盘

    15套Java架构师详情 * { font-family: "Microsoft YaHei" !important } h1 { background-color: #006; ...

  9. 15套java架构师大型分布式综合项目实战、千万高并发-视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展 ...

随机推荐

  1. 13. 关于IDEA工具在springboot整合mybatis中出现的Invalid bound statement (not found)问题

    在一切准备就绪之后,测试test,却出现了org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) ...

  2. Altium Designer的pcb界面如何让线变成点

    但是16版本,需要tools  ---  Grid Manager --双击 双击后: 转自:http://blog.csdn.net/ldcung/article/details/77411434

  3. HDU 1166 敌兵布阵 树状数组||线段树

    http://acm.hdu.edu.cn/showproblem.php?pid=1166 题目大意: 给定n个数的区间N<=50000,还有Q个询问(Q<=40000)求区间和. 每个 ...

  4. Loadrunner11--输入license后提示违反许可证安全,禁止操作

    安装中文补丁包后,重新把mlr5lprg.dll.lm70.dll覆盖LR11安装目录下“bin”文件夹下mlr5lprg.dll.lm70.dll.运行deletelicense.exe.重新用管理 ...

  5. SorceTree 与 Bitbucket连接

    选择bitbucket,由于bitbucket免费的帐号最多能够8个人一起协同开发.我们项目组人数少于8个,私有仓库也不限制. 经过半个多月的应用,大家感觉也还不错,对个人而言.在家也能訪问代码,对公 ...

  6. UVA 10340 - All in All 水~

    看题传送门 Problem E All in All Input: standard input Output: standard output Time Limit: 2 seconds Memor ...

  7. [Flexbox] Use Flex to Scale Background Image

    In this lesson we will use Flexbox to scale a background image to fit on the screen of our React Nat ...

  8. mongodb查询部分满足条件的列

    db.tblorders.createIndex( { orderid : -1 },{background:true, name:"index_orderid"} ); db.o ...

  9. Java反射机制的简单应用

    一直感觉java的反射机制非常强大,可是可用的地方不多.在android学习的时候.一直想实现挂断电话的功能,可是系统并没有提供开放的api接口,看了一下网上使用反射机制来实现该功能,确实非常强大,非 ...

  10. POJ 1979 Red and Black (zoj 2165) DFS

    传送门: poj:http://poj.org/problem?id=1979 zoj:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problem ...