zoukankan      html  css  js  c++  java
  • Java 之JavaBean 、EJB 和POJO

      由于是创业公司,开发人员较少,所以公司临时决定让几个C的程序猿临时客串Java。所以避免不了有很多基础问题,今天就有两个人都问我,JavaBean和POJO的区别,我可按照自己的理解给他们大致说了下,可是仔细一推敲发现自己好像没有那么透彻的讲解很清楚,就查了下资料,记下了一些笔记和理解。

    1.JavaBean

      JavaBean(官方解释)是可复用的Java组件,严格遵循Sun定义的规范要求,JavaBean是一个标准,开发者可以直接复用别人写好软件组件而不必理解它内部的工作机制。简单来说一个JavaBean应该有下面几个特点,

      >类应该是public的

      >属性应该private的,对于属性值的访问应该是要通过getXX,setXX,isXXX方法,isXXX是用于检查元素的值是否是Boolean的。

      >该类应该有一个无参的构造函数,元素值的初始化要通过setXXX方法。

      >这个类应该是实现了Serializable 接口(java.io.Externalizable),这个是为了持久化存储的需要。

     例如:

    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;
        }
    }
    
     
    

     2.EJB(Enterprise Java Bean)

      EJB是运行在一个J2EE服务器上的Java类,它用于处理业务逻辑的,应该是这样的:

       >有状态(Stateful)

       >无状态的(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中引入了注解来简化开发步骤。

    3.POJO(Plain Old Java Object)

      一个POJO没有要求去实现了一个接口或者继承一个类,也没有任何的指导信息。POJO最大的不同之处就是它和EJB无关。Java是一个简化的JavaBean,我们之所以叫它是是简化的bean是因为它只用于装载数据而不用业务逻辑的处理。一个持久化的POJO就是PO,如果用于展示层那么它就是VO .

    4.扩展

    4.1.PO(persistant object ):持久化对象

      持久对象,可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。 

    4.2.VO(Value Object)

      一个值对象就是一个含有值的对象,比如java.lang.Integer.VO:通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递。

    4.3.DAO:data access object

      数据访问对象,是一个sun的一个标准j2ee设计模式 .此对象用于访问数据库。通常和PO结合使用,DAO中包含了各种数据库的操作方法。通过它的方法,结合PO对数据库进行相关的操作。夹在业务逻辑与数据 库资源中间。配合VO, 提供数据库的CRUD操作。

    4.4.DODomain Object

      领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。

    4.5.VOView Object

      视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。

    4.6. BO( Business object)

      用于调用DAO的业务逻辑类,并且将PO和VO联合起来进行业务操作。

    4.7.DTO(Data Transfer Object)

      主要用于远程调用中的传输对象。比如说,一个100个字段的表就对应于PO中的100个属性,但是我们的接口只需要10个字段。那么我们就可以将只含有十个字段的DTO传递给客户端使用。这不会向客户端暴露表结构,一旦它和接口关联起来,那么它就是VO了。

  • 相关阅读:
    临时文件服务器,配置共享文件夹
    封装扩展方法
    List.Insert
    VS 生成事件中xcopy失败
    创建型设计模式总结
    js提交图片转换为base64
    C#建造者模式
    echarts 立体柱
    k8s生产环境启用防火墙,要开启的端口
    一篇文章为你图解Kubernetes网络通信原理
  • 原文地址:https://www.cnblogs.com/zhangminghui/p/4889761.html
Copyright © 2011-2022 走看看