《spring技术内幕》读书笔记——什么是POJO模式

今天在看《spring技术内幕》,第一章中多次提到了使用POJO来完成开发,就百度了一下,在此保留

1.     什么是POJO

POJO的名称有多种,pure old java object 、plain ordinary java object 等。

按照Martin Fowler的解释是“Plain Old Java Object”,从字面上翻译为“纯洁老式的java对象”,但大家都使用“简单java对象”来称呼它。

POJO的内在含义是指那些没有从任何类继承、也没有实现任何接口,更没有被其它框架侵入的java对象。

POCO的概念是从java的POJO借用而来,而两者的含义是一致的,不同的仅仅是使用的语言不一样。所以POCO的解释就是“Plain Old C# Object”。

2.     为什么会有POJO?

主要是Java的开发者被EJB的繁杂搞怕了,大家经过反思,又回归“纯洁老式”的JavaBean,即有无参构造函数,每个字段都有getter和setter的java类。

3.     POJO的意义

POJO让开发者可专注于业务逻辑和脱离框架的单元测试。除此之外, 由于POJO并不须要继承框架的类或实现其接口,开发者能够极其灵活地搭建继承结构和建造应用。

POJO的意义就在于它的简单而灵活性,因为它的简单和灵活,使得POJO能够任意扩展,从而胜任多个场合,也就让一个模型贯穿多个层成为现实。

先写一个核心POJO,然后实现业务逻辑接口和持久化接口,就成了Domain Model; UI需要使用时,就实现数据绑定接口,变成VO(View Object)。

4.     POJO与PO、VO的区别

POJO是指简单java对象(Plain Old Java Objects、pure old java object 或者 plain ordinary java object)。

PO是指持久对象(persistant object持久对象)。

VO是指值对象或者View对象(Value Object、View Object)。注意,本文的VO特指View Object。

持久对象实际上必须对应数据库中的entity,所以和POJO有所区别。比如说POJO是由new创建,由GC回收。但是持久对象是insert数据库创建,由数据库delete删除的。基本上持久对象生命周期和数据库密切相关。另外持久对象往往只能存在一个数据库Connection之中,Connnection关闭以后,持久对象就不存在了,而POJO只要不被GC回收,总是存在的。

由于存在诸多差别,因此持久对象PO(Persistent Object)在代码上肯定和POJO不同,起码PO相对于POJO会增加一些用来管理数据库entity状态的属性和方法。而ORM追求的目标就是要PO在使用上尽量和POJO一致,对于程序员来说,他们可以把PO当做POJO来用,而感觉不到PO的存在。

5.     POJO的扩展

POJO仅包含最简单的字段属性,没有多余的东西,它本质上就是一个普通的JavaBean。

但是在POJO的基础上,能够扩展出不同的对象。

为POJO增加了持久化的方法(Insert、Update、Delete……)之后,POJO就变成了PO。

为POJO增加了数据绑定功能之后,POJO就变成了View Object,即UI Model。

为POJO增加业务逻辑的方法(比如单据审核、转帐……)之后,POJO就变成了Domain Model。

POJO还可以当作DTO使用。

时间: 2024-11-03 21:12:12

《spring技术内幕》读书笔记——什么是POJO模式的相关文章

spring技术内幕读书笔记之IoC容器的学习

第一篇:概念和设计原理 IoC容器的实现作为Spring的核心内容之一非常有必要拿来研究一下 1.概念 IoC(Inversion of Control,控制反转)必须思考的问题:哪些方面的控制被反转了? 对于这个问题,Martin Flower给出结论是:依赖对象的获得被反转了.基于此,他为控制反转创造了一个更好的名字:依赖注入. SpringIoC模块是这一思想的一种实现,IoC容器把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,降低了组件之间的耦合度,利于功能复用,方便进行

Struts2技术内幕 读书笔记一 框架的本质

本读书笔记系列,主要针对陆舟所著<<Struts2技术内幕 深入解析Strtus2架构设计与实现原理>>一书.笔记中所用的图片若无特殊说明,就都取自书中,特此声明. 什么是框架?我们为什么要用框架?框架能给我们带来什么? 这几个问题既简单又复杂.说它简单,是因为框架确实存在在软件设计中,说它复杂是因为我们现在所使用的框架不论是spring还是struts都是经过多年的发展,其内部已经十分庞杂了,因此想一句话两句话说清楚一个框架就不是那么简单了. OK,既然现有的框架都很复杂,那我们

Struts2技术内幕 读书笔记三 表示层的困惑

表示层能有什么疑惑?很简单,我们暂时忘记所有的框架,就写一个注册的servlet来看看. index.jsp <form id="form1" name="form1" method="post" action="loginServlet"> <table width="357" border="0" align="center"> <t

《Spring技术内幕》笔记-第五章 数据库操作组件的实现

Spring JDBC的设计与实现 ?Spring JDBC采用模板的设计模式来完成设计.抽象类中定义模板方法,在模板方法中对处理过程进行描述,然后每个具体的过程实现则交由子类来实现. Spring JDBC模板类的设计与实现 1,设计原理 ?在Spring JDBC中,JdbcTemplate是一个主要的模板类,该类继承JdbcAccessor,实现JdbcOperation接口. ?在JdbcAccessor中对DataSource进行管和配置. ?JdbcOperation接口则定义了操作

Struts2技术内幕 读书笔记二 web开发的基本模式

最佳实践 在讨论基本模式之前,我们先说说一个词:最佳实践 任何程序的编写都得遵循一个特定的规范.这种规范有约定俗称的例如:包名全小写,类名每个单词第一个字母大写等等等等;另外还有一些需要我们严格遵守的:例如我们写自己的servlet的时候就得继承javax.servlet.http.HttpServlet接口. 在标准之上的是对不同标准的具体实现.例如同是servlet标准,tomcat有一套实现方式,Websphere又有不同的实现方式. 在程序员级别来说,面对复杂的业务流程,不同的程序员会有

《Spring技术内幕》笔记-Spring的设计理念和整体架构

1,Spring的主要子项目: -1,Spring Framework(Core):Spring项目的核心.提供IoC,AOP,MVC等核心功能. -2,Spring Web Flow:工作流引擎. -3,Spring BlazeDs Integration:Spring提供的与Flex通讯模块. -4,Spring Security:Spring认证和安全框架. -5,Spring Security OAuth:OAuth在Spring的实现上提供支持. -6,Spring Dynamic M

《Spring技术内幕》笔记-第二章 IoC容器的实现

简介 1,在Spring中,SpringIoC提供了一个基本的JavaBean容器,通过IoC模式管理依赖关系,并通过依赖注入和AOP切面增强了为JavaBean这样子的POJO提供事务管理,生命周期管理等功能. 2,Spring IoC的设计中,主要包含两个主要的容器系列: -1,BeanFactory系列,该序列实现了容器的基本功能. -2,ApplicationContext应用上下文. Spring IoC容器的设计 1,如下图,IoC容器的接口设计图. 2,简介 -1,从BeanFac

《Spring技术内幕》笔记-Spring的设计理念和总体架构

1.Spring的主要子项目: ????-1.Spring Framework(Core):Spring项目的核心.提供IoC,AOP,MVC等核心功能. ????-2.Spring Web Flow:工作流引擎. ????-3.Spring BlazeDs Integration:Spring提供的与Flex通讯模块. ????-4,Spring Security:Spring认证和安全框架. ????-5,Spring Security OAuth:OAuth在Spring的实现上提供支持.

Spring技术内幕阅读笔记(一)

1.BeanFactory:实现ioc容器的最基本形式.String FACTORY_BEAN_PREFIX = "&";Object getBean(String var1) throws BeansException;指定名字的bean <T> T getBean(String var1, Class<T> var2) throws BeansException; <T> T getBean(Class<T> var1) th