pojo和javabean的区别

【0】README

1)本文转自: http://wenku.baidu.com/view/eba89bbcf121dd36a32d828a.html


【1】正文如下:

POJO 和JavaBean是我们常见的两个关键字,一般容易混淆,POJO全称是Plain Ordinary Java Object / Pure Old Java Object,中文可以翻译成:普通Java类,具有一部分getter/setter方法的那种类就可以称作POJO,但是JavaBean则比 POJO复杂很多, Java Bean 是可复用的组件,对 Java Bean 并没有严格的规范,理论上讲,任何一个 Java 类都可以是一个 Bean 。但通常情况下,由于 Java Bean 是被容器所创建(如 Tomcat) 的,所以 Java Bean 应具有一个无参的构造器,另外,通常 Java Bean 还要实现 Serializable 接口用于实现 Bean 的持久性。 Java Bean 是不能被跨进程访问的。


JavaBean是一种组件技术,就好像你做了一个扳子,而这个扳子会在很多地方被拿去用,这个扳子也提供多种功能(你可以拿这个扳子扳、锤、撬等等),而这个扳子就是一个组件。
一般在web应用程序中建立一个数据库的映射对象时,我们只能称它为POJO。

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风格的软件产品或框架事实上仍然要求使用预定的标注,譬如用于更方便的持久化。
JavaBean 是一种JAVA语言写成的可重用组件。它的方法命名,构造及行为必须符合特定的约定:

   1. 这个类必须有一个公共的缺省构造函数。
   2. 这个类的属性使用getter和setter来访问,其他方法遵从标准命名规范。
   3. 这个类应是可序列化的。 

因为这些要求主要是靠约定而不是靠实现接口,所以许多开发者把JavaBean看作遵从特定命名约定的POJO。
简而言之,当一个Pojo可序列化,有一个无参的构造函数,使用getter和setter方法来访问属性时,他就是一个JavaBean。


我的整理与总结:
一、对于java bean,就是一个java模型组件,他为使用java类提供了一种标准的格式,在用户程序和可视化管理工具中可以自动获得这种具有标准格式的类的信息,并能够创建和管理这些类。 
java bean 可以使应用程序更加面向对象,可以把数据封装起来,把应用的业务逻辑和显示逻辑分离开,降低了开发的复杂程度和维护成本!
JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBeans 通过提供符合一致性设计模式的公共方法将内部域暴露称为属性。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制发现和操作这些JavaBean 属性。
从编程的角度,也就是最基本的实现了get跟set方法的类。
二、Enterprise Bean,也就是Enterprise JavaBean(EJB),是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具(SDK)。


在 J2EE里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话 Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。  

1.Session Bean用于实现业务逻辑,它可以是有状态的,也可以是无状态的。每当客户端请求时,容器就会选择一个Session Bean来为客户端服务。Session Bean可以直接访问数据库,但更多时候,它会通过Entity Bean实现数据访问。 这个类一般用单例模式来实现,因为每次连接都需要用到它。


2.Entity Bean是域模型对象,用于实现O/R映射,负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个Entity Bean对象相当于新建一条记录,删除一个 Entity Bean会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步。 

      Java Persistence 1.0规范中的entity bean仅作为普通Java对象(POJO)来使用,并且是映射到关系数据库表的。与其他类型的EJB不同,entity bean可以被分配,序列化,并像任何其他POJO那样通过网络被发送出去。


3.MessageDriven Bean是EJB2.0中引入的新的企业Bean,它基于JMS消息,只能接收客户端发送的JMS消息然后处理。MDB实际上是一个异步的无状态Session Bean,客户端调用MDB后无需等待,立刻返回,MDB将异步处理客户请求。这适合于需要异步处理请求的场合,比如订单处理,这样就能避免客户端长时间的等待一个方法调用直到返回结果。 


三、Enterprise Bean 与 JavaBean的区别

最初,JavaBean的目的是为了将可以重复使用的软件代码打包标准。特别是用与帮助厂家开发在综合开发环境(IDE)下使用的java软件部件。这些包括如Grid控件,用户可以将该部件拖放到开发环境中。从此,JavaBean就可以扩展为一个java web 应用的标准部件,并且JavaBean部件框架已经扩展为企业版的 Bean(EJB)。 
  JavaBean 和 Server Bean(通常称为 Enterprise JavaBean (EJB))有一些基本相同之处。它们都是用一组特性创建,以执行其特定任务的对象或组件。它们还有从当前所驻留服务器上的容器获得其它特性的能力。这使得 bean 的行为根据特定任务和所在环境的不同而有所不同。
JavaBean 是使用 java.beans 包开发的,它是 Java 2 标准版的一部分。JavaBean 是一台机器上同一个地址空间中运行的组件。JavaBean 是进程内组件。Enterprise Bean 是使用 javax.ejb 包开发的,它是标准 JDK 的扩展,是 Java 2 Enterprise Edition 的一部分。Enterprise Bean 是在多台机器上跨几个地址空间运行的组件。因此 Enterprise Bean 是进程间组件。JavaBean 通常用作 GUI 窗口小部件,而 Enterprise Bean 则用作分布式商业对象. 


四、POJO一个正规的Java对象(不是JavaBean,EntityBean等),也不担当任何的特殊的角色,也不实现任何Java框架指定的接口。POJO是一个简单的、正规Java对象,它包含业务逻辑处理或持久化逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。

  POJO 应该不是我们开始认为的JavaBean,当然更不是EJB,它不应该依赖于框架即继承或实现某些框架类或接口。例如:Struts1中的Action和 ActionForm当然不属于POJO了,而在Struts2中的Action由于可以不继承任何的接口,所以在这种情况下Action是POJO,但是Struts2中的Action也可以继承ActionSupport类就不再属于POJO了。POJO里面是可以包含业务逻辑处理和持久化逻辑,也可以包含类似与JavaBean属性和对属性访问的set和get方法的。
    在百度百科上的解释是:简单的Java对象(Plain Ordinary Java Objects)实际就是普通JavaBeans,使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,有时可以作为value object或dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331093.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用poi调整字体格式、添加单元格注释、自动调整列宽

1 创建新的工作铺 import java.io.FileOutputStream;import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apa…

MySQL 的索引是什么?怎么优化?

转载自 MySQL 的索引是什么?怎么优化? 摘要: 索引对大数据的查询速度的提升是非常大的,Explain可以帮你分析SQL语句是否用到相关索引。 索引类似大学图书馆建书目索引,可以提高数据检索的效率,降低数据库的IO成本。My…

maven(5)坐标和依赖

【0】README1)本文部分文字转自 “maven实战”,旨在 review “maven(5)坐标和依赖” 的相关知识;【2】坐标详解 1)intro:坐标用于定位 类库,而一组maven 坐标通过一些元素来进行定义的:groupId…

poi中文api文档

POI中文API文档 一、 POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。二、 HSSF概况 HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、…

聊聊MyBatis缓存机制

转载自 聊聊MyBatis缓存机制前言MyBatis是常见的Java数据库访问层框架。在日常工作中,开发人员多数情况下是使用MyBatis的默认缓存配置,但是MyBatis缓存机制有一些不足之处,在使用中容易引起脏数据,形成一些潜在的隐患。个人在业务…

maven(6)仓库

【0】README1)本文部分文字转自 “maven实战”,旨在 review “maven(6)仓库” 的相关知识; 【1】何为 Maven仓库1)intro to 构件:在maven中,任何一个依赖,插件或者项目构建的输出,都…

防止用户重复提交表单数据,session方式,js方式

1. 使用session的方式创建Token令牌解决 创建一个生成令牌的工具类,在该类中有返回类的对象,生成token的方法public class TokenUtil {/**单例设计模式(保证类的对象在内存中只有一个)*1、把类的构造函数私有*2、自己创建一个类的…

mybatis_user_guide(3)XML配置

【-1】README1)本文全文总结于 http://www.mybatis.org/mybatis-3/zh/configuration.html#environments【0】MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置(settings)和属性(properties)信息。文档的顶层结构如…

easyUI 运用窗口和form表单制作导出功能

这里运用到easyUI的窗口模式和form表单的提交制作一个有条件的导出excel数据统计的功能&#xff0c;主要是知道了怎么运用easyUI的窗口和表单 jsp中&#xff1a;<!-- 导出数据来源条件窗口 --><div id"exportSign" ><form id"condition" me…

分布式一致性算法:可能比你想象得更复杂

转载自 分布式一致性算法&#xff1a;可能比你想象得更复杂分布式系统的难题张大胖遇到了一个难题。他们公司的有个服务器&#xff0c;上面保存着宝贵的数据&#xff0c;领导Bill 为了防止它挂掉&#xff0c; 要求张大胖想想办法把数据做备份。张大胖发挥了抽象的能力&#xff…

mybatis_user_guide(4) Mapper XML 文件

【-1】README 1&#xff09;本文全文总结于 http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html【0】SQL 映射文件有很少的几个顶级元素&#xff08;按照它们应该被定义的顺序&#xff09;&#xff1a; cache – 给定命名空间的缓存配置。cache-ref – 其他命名空间缓存配置…

Hibernate关联关系配置(一对多、一对一和多对多)

第一种关联关系&#xff1a;一对多&#xff08;多对一&#xff09; “一对多”是最普遍的映射关系&#xff0c;简单来讲就如消费者与订单的关系。 一对多&#xff1a;从消费者角的度来说一个消费者可以有多个订单&#xff0c;即为一对多。 多对一&#xff1a;从订单的角度来…

3分钟了解“关联规则”推荐

转载自 3分钟了解“关联规则”推荐 “把啤酒放在尿布旁&#xff0c;有助于提升啤酒销售量”是关联规则推荐的经典案例&#xff0c;今天&#xff0c;和大家聊聊“关联规则推荐”&#xff0c;正文不含任何公式&#xff0c;保证PM弄懂。一、概念 什么是关联规则&#xff08;Associ…

mybatis_user_guide(5) 动态 SQL

【-1】README 1&#xff09;本文全文总结于 http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html 【0】动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似。在 MyBatis 之前的版本中,有很多的元素需要来了解。MyBatis 3 大大提升了它们,现在用不到原先一半的元…

sqlserver还原差异备份

因为之前遇到还原差异备份&#xff0c;最开始遇到SQLServer报错&#xff1a;”无法还原日志备份或差异备份&#xff0c;因为没有文件可用于前滚“。查阅很多资料后&#xff0c;终于得到解决。收集整理成这篇随笔。   问题原因&#xff1a;出现这种错误绝大多数是因为还原完整…

1分钟了解相似性推荐

转载自 1分钟了解相似性推荐前几天聊的“协同过滤&#xff08;Collaborative Filtering&#xff09;”和“基于内容的推荐&#xff08;Content-based Recommendation&#xff09;”&#xff0c;都必须分析用户的历史行为数据&#xff08;例如电影点击数据&#xff0c;职位查看数…

mybatis_user_guide(6) Java API

【0】README1&#xff09;本文全文总结于 http://www.mybatis.org/mybatis-3/zh/java-api.html【1】SqlSessions1)intro&#xff1a; 我们知道&#xff0c; SqlSessionFactoryBuilder 创建 SqlSessionFactory &#xff0c; SqlSessionFactory 创建 SqlSession&#xff0c;然后…

hibernate左连接查询时在easyUI的dataGrid中有些行取值为空的解决办法

1 当使用left join左连连接&#xff0c;sql语句为 select t from SecondPage t left join t.rightNavbar n where 11 页面中出现了部分空行的情况&#xff0c;上述语句返回的list集合为 DataGrid dataGrid new DataGrid(); List<SecondPage> listsecondPageDao.find(…

1分钟了解基于内容的推荐,pm又懂了

转载自 1分钟了解基于内容的推荐&#xff0c;pm又懂了什么是基于内容的推荐&#xff08;Content-based Recommendation&#xff09;&#xff1f; 答&#xff1a;通过用户历史感兴趣的信息&#xff0c;抽象信息内容共性&#xff0c;根据内容共性推荐其他信息。比如&#xff0c;如…

mybatis_user_guide(7) SQL语句构建器类

【0】README1&#xff09;本文全文总结于 http://www.mybatis.org/mybatis-3/zh/statement-builders.html【1】在Java代码中来动态生成SQL代码就是一场噩梦1&#xff09;problemsolutions&#xff1a;1.1&#xff09;problem&#xff1a;Java程序员面对的最痛苦的事情之一就是…