转自:http://www.diybl.com/course/3_program/java/javashl/200845/108451.html

POJO(Plain Old Java Object)这种叫法是Martin Fowler、Rebecca Parsons和Josh MacKenzie在2000年的一次演讲的时候提出来的。
我在做J2EE培训中发现我的很多学生问我什么是POJO,后来我在写书(《Spring2初学者实践教材》和《Spring3初学者实践教材》)的时候 发现POJO这个概念无法回避。现在网上对于POJO的解释很多,但是很多都是有错误的或者不够准确。对此我一开始也是存在误区的,我原来是这样理解的:
        POJO是这样的一种“纯粹的”JavaBean,在它里面除了JavaBean规范的方法和属性没有别的东西,即private属性以及对这个属性方法的public的get和set方法。我们会发现这样的JavaBean很“单纯”,它只能装载数据,作为数据存储的载体,而不具有业务逻辑处理的能力。
    所以下面的代码被认为是POJO了。

package com.tongking.spring;
public class DbHello implements Hello {
       private DictionaryDAO dao;
       public void setDao(DictionaryDAO dao) {
              this.dao = dao;
       }

}

其实,这样的认为是错误的,我仔细阅读了《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 many benefits of encoding business logic into regular java objects rather than using Entity Beans. We wondered why people were so against using regular objects in their systems and concluded that it was because simple objects lacked a fancy name. So we gave them one, and it''s caught on very nicely.

基本的意思是我们要给具有业务逻辑处理的规则的Java对象(regular java objects)起了一个名字——POJO,这些Java对象不是EntityBeans(EJB的一种)。

我又在http://www.webopedia.com/TERM/P/POJO.htm查到解释如下:

POJO, or Plain Old Java Object, is a normal Java object class (that is, not a JavaBean, EntityBean etc.)  and does not serve any other special role nor does it implement any special interfaces of any of the Java frameworks. This term was coined by Martin Fowler, Rebbecca Parsons and Josh MacKenzie who believed that by creating the acronym POJO, such objects would have a "fancy name", thereby convincing people that they were worthy of use.
        基本意思是说POJO一个正规的Java对象(不是JavaBean,EntityBean等),也不担当任何的特殊的角色,也不实现任何Java框架指定的接口。
        我觉得上面的解释很准确,POJO应该不是我们开始认为的JavaBean,当然更不是EJB,它不应该依赖于框架即继承或实现某些框架类或接口。例 如:Struts1中的Action和ActionForm当然不属于POJO了,而在Struts2中的Action由于可以不继承任何的接口,所以在 这种情况下Action是POJO,但是Struts2中的Action也可以继承ActionSupport类就不再属于POJO了。POJO里面是可 以包含业务逻辑处理和持久化逻辑,也可以包含类似与JavaBean属性和对属性访问的set和get方法的。
       最后,我们总结一下给一个定义把,POJO是一个简单的、正规Java对象,它包含业务逻辑处理或持久化逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。

转载于:https://blog.51cto.com/greenlight/721234

【转载】究竟什么是POJO?相关推荐

  1. 究竟什么是POJO?(转载)

    POJO ( Plain Old Java Object )这种叫法 是 Martin Fowler . Rebecca Parsons 和 Josh MacKenzie 在 2000 年的一次演讲的 ...

  2. 究竟什么是POJO?

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

  3. [转载] 计算机网络——OSI模型究竟忽悠了多少人

    来源:http://blog.c114.net/html/60/250760-60744.html 不了解历史的人,注定要重复历史. --J. Onions, RFC 1606 历史上OSI模型和TC ...

  4. [转载]Buffon投针实验:究竟为什么是pi?

    Buffon投针实验:究竟为什么是pi?  Brain Storm |  2009-11-06 20:16| 57 Comments | 本文内容遵从CC版权协议 转载请注明出自matrix67.co ...

  5. 【转载】我们究竟是如何测量珠峰的?

    可视化星球制作了一篇大作<我们究竟是如何测量珠峰的?>,读后令人叫绝,特转载此处供大家学习. 感谢可视化星球团队!致敬珠峰测量队! 链接 https://mp.weixin.qq.com/ ...

  6. 【转载】究竟啥才是互联网架构“高可用”

    一.什么是高可用 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用 ...

  7. 火了 2 年的服务网格究竟给微服务带来了什么?(转载)

    原文链接:https://www.sofastack.tech/blog/microservices-service-mesh/ 本文节选自 ServiceMesher 社区出品的开源电子书<I ...

  8. 转载 | 在阿里做了3年多程序员,我究竟学到了什么?

    原标题: 在阿里做了3年多程序员,我究竟学到了什么? 本文由鸟哥笔记春羽计划出品 大家好,我叫雷晓.2015年1月12号入职阿里,2018年8月9号离职,3年多半的日子不算长,但阿里的这段经历深深改变 ...

  9. 张老师的生日究竟是哪天(经典推理题[转载])

    小明和小强都是张老师的学生,张老师的生日是M月N日,2人都只是知道张老师的生日是下列10组中的一天,而不知道究竟是哪一天. 3月4日 3月5日 3月8日 6月4日 6月7日 9月1日 9月5日 12月 ...

最新文章

  1. Navicat链接数据库报错1130解决方案
  2. ADO.NET Entity Framework 使用数据定义语言(实体框架)
  3. 二叉查找树--java
  4. Python网络编程(1.利用socket(udp)+网络调试助手,发送数据)
  5. php 导出txt 缩进,indent - 缩进文本
  6. 整型数据类型存储空间大小(信息学奥赛一本通-T1016)
  7. oracle能不能改外键属性,CSS_小议Oracle外键约束修改行为(五), Oracle的外键用来限制子表 - phpStudy...
  8. 第11月第18天 RACSequence
  9. 数据分析中会常犯哪些错误,如何解决? 四
  10. C语言_printf
  11. ARM 汇编语言程序设计
  12. 我的世界虚无2可直连服务器IP,我的世界虚无世界服务器1.7.10
  13. 性能测试监控TP50、TP99、TP999含义(99分位延时的含义)
  14. Longhorn,企业级云原生容器分布式存储 - 高可用
  15. 安卓持久框架Room VS GreenDao
  16. 【转载】BAPI_GOODSMVT_CREATE FUNCITON FOR MIGO 各种移动类型 源代码参考
  17. MYSQL数据库插入数据时出现Data truncation问题
  18. 3d空间中球体的动量守恒
  19. android8 Camera2 从 CameraService 到 HAL Service
  20. flash builder对代码进行调试 下载flash player debug软件

热门文章

  1. Spring+SpringMVC+mybatis+Quartz整合
  2. 支持Android的Qt5预览
  3. 《.NET应用架构设计:原则、模式与实践》新书博客-2.1.1-设计原则简述
  4. 程序员面试金典——9.2机器人走方格
  5. Leetcode 109.有序链表转换二叉搜索树
  6. 自旋锁--Test and Set Clock机制分析
  7. 维纳滤波的详细讲解(同为小白,相互取暖)
  8. python下载数据集出现:Compressed file ended before the end-of-stream marker was reached
  9. 泰斯花粉阻隔剂 怎么使用
  10. phpstrom常用配置