因为是创业公司,开发人员较少,因此公司临时决定让几个C的程序猿临时客串Java。因此避免不了有不少基础问题,今天就有两我的都问我,JavaBean和POJO的区别,我可按照本身的理解给他们大体说了下,但是仔细一推敲发现本身好像没有那么透彻的讲解很清楚,就查了下资料,记下了一些笔记和理解。html
JavaBean(官方解释)是可复用的Java组件,严格遵循Sun定义的规范要求,JavaBean是一个标准,开发者能够直接复用别人写好软件组件而没必要理解它内部的工做机制。简单来讲一个JavaBean应该有下面几个特色,java
>类应该是public的web
>属性应该private的,对于属性值的访问应该是要经过getXX,setXX,isXXX方法,isXXX是用于检查元素的值是不是Boolean的。数据库
>该类应该有一个无参的构造函数,元素值的初始化要经过setXXX方法。设计模式
>这个类应该是实现了Serializable 接口(java.io.Externalizable
),这个是为了持久化存储的须要。api
例如:服务器
package com.example; import java.io.Serializable; public class Bar implements Serializable { private String name = null; private boolean flag = false; public Bar() { } public String getName() { return this.name; } public void setName(final String name) { this.name = name; } public boolean isFlag() { return this.flag; } public void setFlag(final boolean flag) { this.flag = flag; } }
EJB是运行在一个J2EE服务器上的Java类,它用于处理业务逻辑的,应该是这样的:oracle
>有状态(Stateful)less
>无状态的(Stateless)函数
>实体(Entity)
>消息驱动Bean(Message Driven Beans)
举例(无状态Bean):
@Stateless public class EmployeeServiceBean { @PersistenceContext EntityManager em; public void addEmployee(Employee emp) { em.persist(emp); } } Read more: http://www.javaexperience.com/difference-between-pojo-javabean-ejb/#ixzz3otv2sKDE
说明:由于EJB2.0和EJB被要求是实现EJBobject 接口和指明EJB的部署类型,因此在EJB3.0中引入了注解来简化开发步骤。
一个POJO没有要求去实现了一个接口或者继承一个类,也没有任何的指导信息。POJO最大的不一样之处就是它和EJB无关。Java是一个简化的JavaBean,咱们之因此叫它是是简化的bean是由于它只用于装载数据而不用业务逻辑的处理。一个持久化的POJO就是PO,若是用于展现层那么它就是VO .
持久对象,能够当作是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录能够用PO的集合。PO中应该不包含任何对数据库的操做。
一个值对象就是一个含有值的对象,好比java.lang.Integer.VO:一般用于业务层之间的数据传递,和PO同样也是仅仅包含数据而已。但应是抽象出的业务对象,能够和表对应,也能够不,这根据业务的须要.我的以为同DTO(数据传输对象),在web上传递。
数据访问对象,是一个sun的一个标准j2ee设计模式 .此对象用于访问数据库。一般和PO结合使用,DAO中包含了各类数据库的操做方法。经过它的方法,结合PO对数据库进行相关的操做。夹在业务逻辑与数据 库资源中间。配合VO, 提供数据库的CRUD操做。
领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。
视图对象,用于展现层,它的做用是把某个指定页面(或组件)的全部数据封装起来。
用于调用DAO的业务逻辑类,而且将PO和VO联合起来进行业务操做。
主要用于远程调用中的传输对象。好比说,一个100个字段的表就对应于PO中的100个属性,可是咱们的接口只须要10个字段。那么咱们就能够将只含有十个字段的DTO传递给客户端使用。这不会向客户端暴露表结构,一旦它和接口关联起来,那么它就是VO了。