Java Bean Model Entity POJO 数据类那些事儿

JavaBean

概念

JavaBean是Java中一种特殊的类,可以将多个对象封装到一个对象中。特点是可序列化,提供无参构造器,提供getter方法和setter方法访问对象的属性。名称中的“Bean”是用于Java的可重用软件组件的惯用叫法

特点

  • Bean可以控制它的属性、事件和方法是否暴露给其他程序。
  • Bean可以接收来自其他对象的事件,也可以产生事件给其他对象。
  • 有软件可用来配置Bean。
  • Bean的属性可以被序列化,以供日后重用。

规范

  • 所有属性为private
  • 提供默认无参构造方法
  • 提供getter和setter方法
  • 实现serializable接口,可以序列化和反序列化,可选

应用场景

  • View——Bean——Controller 外部视图与控制器交换数据时候会用到
  • Service——Bean——Database 应用服务层与数据库持久层存取数据会用到
  • MicroServiceA——Bean——MicroServiceB 微服务模块与其他微服务模块之间通信使用

注意:

JavaBean是遵循Sun的JavaBean规范(最早于1996年发布)的类。JavaBean被定义为Java的“软件组件模型”。

SpringBean本质上是由Spring管理的对象。更具体地说,它是一个由Spring Framework容器实例化,配置和管理的对象。Spring bean是在Spring配置文件中定义的(或者使用特定注解),由Spring容器实例化,然后注入到您的应用程序中。将Spring受管对象称为Bean的原因是,在早期版本中,Spring仅用于JavaBean。当然不再是这种情况:Spring可以管理几乎任何对象,即使它不具有JavaBean类型的特性(例如默认构造函数或mutator方法(getter和setter))也是如此。尽管如此,“SpringBean”一词仍然存在。

注意:以下术语非规范,大多数根据业务场景约定俗成的,直接或者间接的继承了JavaBean规范和特点

Model

概念

在MVC三种分层开发中,Model担任了View需要渲染的数据

应用场景

@RequestMapping("/list")
public String list(HttpServletRequest request,Model model){
    UserModel userModel=new UserModel(); 

    model.addAttribute("userModel",userModel);
    return "user/list";
}

Entity

概念

实体是轻量级的持久性域对象。通常,一个实体代表关系数据库中的一个表,每个实体实例对应于该表中的一行

规范

  • 该类必须使用javax.persistence.Entity注释进行注释。
  • 该类必须具有公共或受保护的无参数构造函数。该类可能具有其他构造函数。
  • 不得将类声明为final。不必将方法或持久实例变量声明为final。
  • 如果实体实例通过值作为分离对象(例如,通过会话Bean的远程业务接口)通过值传递,则该类必须实现Serializable接口。
  • 实体可以扩展实体类和非实体类,非实体类可以扩展实体类。
  • 持久实例变量必须声明为私有,受保护或程序包私有,并且只能由实体类的方法直接访问。客户必须通过访问者或业务方法访问实体的状态。

应用场景

在JPA中,建立实体与数据表字段一一对应

@Entity
@Table
public class Activity {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    private String activityName;


}

POJO(Plain Old Java Object)

概念

POJO代表普通的旧Java对象。它是一个普通的Java对象,除了Java语言规范所强加的要求之外,没有任何特殊限制,并且不需要任何类路径。POJO用于提高程序的可读性和可重用性。POJO由于易于编写和理解而获得了最多的认可。它们是由Sun Microsystems在EJB 3.0中引入的。

规范

  1. 不可以继承指定的类
  2. 不可以实现预定的接口
  3. 不可以包含其他注解

JavaBean是POJO的特殊类型,POJO不一定是JaveBean

POJO与Java Bean的区别

POJOJAVABean
除了Java语言强加的限制外,它没有其他特殊限制。这是一个特殊的POJO,它有一些限制。
它没有对成员提供太多控制。它提供对成员的完全控制。
它可以实现Serializable接口。它应该实现可序列化的接口。
可以通过字段名称访问字段。字段只能由getter和setter访问。
字段可以具有任何可见性。字段只有私人可见性。
可能/可能没有no-arg构造函数。它必须具有无参数构造函数。
当您不想限制成员并让用户完全访问您的实体时使用它当您要向用户提供您的实体,但仅向实体的一部分提供服务时,将使用它。

POJO类和Bean均用于定义Java对象,以提高其可读性和可重用性。POJO没有其他限制,而bean是具有某些限制的特殊POJO。

衍生对象

分层领域模型规约:

  • DO( Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象。
  • DTO( Data Transfer Object):数据传输对象,服务或者模块之间需要传输的对象
  • BO( Business Object):业务对象。 由Service层输出的封装业务逻辑的对象。
  • VO( View Object):显示层对象,通常是Web向模板渲染引擎层传输的对象。也有的叫 Value Object 值对象,不推荐
 JVM运行时数据分区介绍
OAuth 2.0 工作流程 授权模式 快速理解 
上一篇:JVM运行时数据分区介绍
下一篇:OAuth 2.0 工作流程 授权模式 快速理解
评论

如果我的文章对你有帮助,或许可以打赏一下呀!

支付宝
微信
QQ