【转】作为一个Java开发者,你必须弄懂这些对象的概念:POJO、PO、DTO、DAO、BO、VO

本文详细介绍了Java开发中常见的对象概念,包括POJO(Plain Old Java Object)、PO(Persistant Object)、DTO(Data Transfer Object)、DAO(Data Access Object)、BO(Business Object)和VO(View Object)。POJO是简单Java对象,不依赖任何框架。PO是持久化对象,对应数据库记录。DTO用于数据传输,减少数据发送量。DAO处理数据库访问,提供持久化操作。BO封装业务逻辑,可能包含多个PO。VO用于前端显示,对应界面数据。
摘要由CSDN通过智能技术生成

  作为一个大四即将毕业的毕业生,技术会的多并不重要,我觉得重要的是基础,这样才能才职场中如鱼得水般地学习。废话不多说,下面开始讲解这些概念。

POJO

   全称:Plain Ordinary Java Object,简单普通java对象,一般使用在数据库表映射,即一个字段对应一个属性。

PO

   全称:Persistant Object,持久化对象,一般存储数据库中映射之后的数据,一条记录对应一个PO。相当于将POJO持久化成PO。

DTO

   全称:Data Transfer Object,数据传输对象,一般用于数据层向外层发送需要的数据格式(部分字段),这样可以加快发送效率。

DAO

   全称:Data  Access Object,数据访问对象,就是学习SSM时候的DAO层。用于数据库和外层作为持久化数据的传输。

BO

   全称:Business Object,业务对象,一般使用于业务逻辑层。用于存储复杂的数据结构,比如将会数据库数据进行计算,保存不同结果,也是一种BO对象。

VO

   全称:View Object,表现对象,一般使用前端页面数据显示。

前言:

在Java开发中经常遇到这些概念问题,有的可能理解混淆,有的可能理解不到位,特此花了很多时间理顺了这些概念。不过有些概念实际开发中并没有使用到,可能理解还不够准确,只能靠后续不断纠正了。

 

1、什么是POJO ?

POJO(Plain Old Java Object)这种叫法是Martin Fowler、Rebecca Parsons和Josh MacKenzie在2000年的一次演讲的时候提出来的。

 按照Martin Fowler的解释是“Plain Old Java Object”,从字面上翻译为“纯洁老式的Java对象”,但大家都使用“简单java对象”来称呼它。POJO的内在含义是指:那些没有继承任何类、也没有实现任何接口,更没有被其它框架侵入的java对象。

先给一个定义吧:

POJO是一个简单的、普通Java对象,它包含业务逻辑处理或持久化逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色,不继承或不实现任何其它Java框架的类或接口。 可以包含类似与JavaBean属性和对属性访问的setter和getter方法的。

POJO(Plain Old Java Object)这个名字用来强调它是一个普通java对象,而不是一个特殊的对象。

2005年11月时,“POJO”主要用来指代那些没用遵从特定的Java对象模型,约定或框架如EJB的Java对象。

理想地讲,一个POJO是一个不受任何限制的Java对象(除了Java语言规范)。例如一个POJO不应该是

   1. 扩展预定的类,如       public class Foo extends javax.servlet.http.HttpServlet { ...

   2. 实现预定的接口,如   public class Bar implements javax.ejb.EntityBean { ...

   3. 包含预定的标注,如   @javax.ejb.Entity public class Baz{ ...

然后,因为技术上的困难及其他原因,许多兼容POJO风格的软件产品或框架事实上仍然要求使用预定的标注,譬如用于更方便的持久化。

一般在web应用程序中建立一个数据库的映射对象时,我们只能称它为POJO。

正确官方理解思路:

我在做Java EE培训中,发现我的很多学生问我什么是POJO,后来我在写书的时候发现POJO这个概念无法回避。现在网上对于POJO的解释很多,但是很多都是有错误的或者不够准确。

对此我一开始也是存在误区的,我原来是这样理解的: POJO是这样的一种“纯粹的”JavaBean,在它里面除了JavaBean规范的方法和属性没有别的东西,即private属性以及对这个属性方法的public的get和set方法。我们会发现这样的JavaBean很“单纯”,它只能装载数据,作为数据存储的载体,而不具有业务逻辑处理的能力。所以下面的代码被认为是POJO了。 

 
  1. package com.demo.spring;

  2.  
  3. public class DbHello implements Hello { //实现了接口,就不能称之为POJO,这已经不是简单的Java类了

  4.  
  5.      private DictionaryDAO dao;

  6.  
  7.      public void setDao(DictionaryDAO dao) {

  8.  
  9.             this.dao = dao;

  10.  
  11.      }

  12.  
  13. }

其实,这样的认为是错误的,我仔细阅读了《POJOs in Action》这本书的有关部分和POJO的最原始的出处http://martinfowler.com/bliki/POJO.html,The term was coined while Rebecca Parsons, Josh MacKenzie and I were preparing for a talk at a conference in September 2000.

     In the talk we were pointing out the m

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值