`
kidiaoer
  • 浏览: 822432 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

POJO

阅读更多
  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框架的类或接口。
   
分享到:
评论

相关推荐

    java Pojo转Map

    在Java编程中,Pojo(Plain Old Java Object)是一种简单的对象模型,通常用于表示数据实体。Map接口则是Java集合框架的一部分,它提供了键值对的数据存储方式,方便数据的存取。将Pojo对象转换为Map,可以简化数据...

    Mybatis生成pojo插件

    然而,通过"Mybatis pojo插件",我们可以极大地提高开发效率,自动根据数据库表结构生成对应的POJO类。 首先,我们来看一下如何安装和配置这个插件。在Eclipse这样的集成开发环境中,你可以通过以下步骤进行: 1. ...

    数据表生成pojo

    在Java开发中,POJO(Plain Old Java Object)是一个简单的对象类,不包含任何特定框架的规范或约定,主要用于封装数据。"数据表生成POJO"这个主题涉及到将数据库中的表结构映射到Java世界中的类,使得我们可以方便...

    POJO转Map.txt

    ### POJO转Map知识点详解 #### 一、POJO简介 在Java开发中,POJO(Plain Old Java Object)指的是一个简单的Java对象,通常用来表示应用程序中的数据模型或业务实体。POJO没有特定的框架依赖,它仅仅是一个具有...

    IDEA逆向生成POJO/DAO/MAPPER 《Generate POJOs.groovy》

    IDEA自带的插件Generate POJOs.groovy 比较简陋,不能生成完整的dao/mapper,切生成的POJO没有注解。没有统一格式化,所以在此基础上进行了扩展能够简单的生成pojo/dao/mapper. 使用时选择目录后会在改目录下生成...

    POJO In action 代码

    《POJO In Action》是一本深入探讨Plain Old Java Object(POJO)概念和技术的书籍,其核心在于如何在Java开发中有效地使用简单、无框架依赖的对象。POJOs是Java编程中最基本的元素,它们代表了纯粹的面向对象设计,...

    SSM项目实战pojo类

    在这个“SSM项目实战pojo类”中,我们主要探讨的是数据模型层,也就是POJO(Plain Old Java Object)类的设计与应用。 POJO是Java中一个简单的对象,它不附带任何框架特定的代码,通常用作持久化层的数据载体,用于...

    json2pojo功能有点麻烦

    参照https://github.com/joelittlejohn/jsonschema2pojo/wiki/Getting-Started的步骤Using jsonschema2pojo within your Java project (embedded)

    SSM笔记-POJO

    本笔记主要探讨了如何在SpringMVC中使用POJO来处理请求参数,以及SpringMVC如何自动将请求参数填充到对应的POJO对象中。 首先,理解POJO的概念。POJO是一个简单的Java对象,没有特定的约束或依赖于任何框架。在SSM...

    用WebService传递POJO和对象数组的例子.doc

    AXIS2是一个流行的Java Web服务框架,它支持多种方式来创建和消费Web服务,包括使用POJO(Plain Old Java Object)作为服务接口。本文将详细讨论如何在AXIS2中通过POJO发布Web服务,以及解决在使用AXIS2 Eclipse插件...

    实体类POJO生成器

    实体类(POJO)在Java开发中扮演着重要的角色,它是Plain Old Java Object的缩写,通常用于表示数据库中的表或者API的响应模型。当进行数据访问层的开发时,手动编写每个实体类可能会非常耗时,特别是面对大量的表...

    利用Mybatis逆向工程来生成pojo和mapper

    Mybatis逆向工程是一种强大的工具,它允许开发者根据数据库中的表结构自动生成对应的Java实体类(POJO)、数据访问对象(DAO)以及Mapper接口和XML配置文件,极大地提高了开发效率,减少了手动编写这些基础代码的...

    birt_POJO作数据源

    【BIRT POJO作数据源】是BIRT报表设计中的一种高级用法,它允许开发者直接使用Java的Plain Old Java Objects (POJOs)作为报表的数据源,而非传统的数据库或其他结构化数据源。这种方式提供了更大的灵活性,特别是...

    hibernate tools 生成pojo

    **标题:“Hibernate Tools 生成POJO”** **一、Hibernate Tools 概述** Hibernate Tools是Hibernate项目的一个扩展,它提供了一系列实用工具,帮助开发者在Java应用程序中更方便地使用Hibernate ORM框架。这些工具...

    Feign发送Get请求时,采用POJO对象传递参数的最终解决方案.docx

    ### Feign发送Get请求时,采用POJO对象传递参数的最终解决方案 #### 前言 在Spring Cloud技术栈中,Feign作为一种声明式的HTTP客户端框架,极大地简化了微服务间的HTTP请求调用过程,使其几乎如同调用本地方法一般...

    java反射封装结果集内容到pojo

    当我们从数据库读出数据得到ResultSet或RowSet的时候,我们的做法是遍历结果集,然后封装到pojo里面,再封装到List,那么,每次封装是不是很麻烦呢,前段时间小弟看了下反射的东西,试着写了个类,目的在于方便封装...

    pojo类与javaBean

    ### POJO类与JavaBean详解 #### POJO类与JavaBean的概念 在Java开发领域,POJO类与JavaBean是两个常被提及的概念,它们在软件设计和编码实践中扮演着重要角色,尤其在构建可扩展性和维护性高的系统时更是不可或缺...

    eclipse 配置 hibernate tools 反向生成 pojo类 注解

    为了提高开发效率,开发者经常使用Hibernate Tools来反向工程数据库模式,自动生成POJO(Plain Old Java Object)类,这些类可以直接用于数据操作。本文将详细讲解如何在Eclipse中配置Hibernate Tools以实现注解方式...

Global site tag (gtag.js) - Google Analytics