范畴模型命名规约:
- 数据目标:xxxDO,xxx即为数据表名
- 数据传输目标:xxxDTO,xxx为事务范畴相关的称号。
- 展示目标:xxxVO,xxx一般为网页称号。
- POJO是DO/DTO/BO/VO的统称,制止命名成xxxPOJO。
PO、VO、DAO、BO、DTO、POJO
- PO (Persistent Object): 耐久化目标,用于表明数据库中的数据记载,一般与数据库表的结构相对应,以便进行 CRUD (创立、读取、更新、删去) 操作。
- VO (Value Object): 值目标,用于表明事务逻辑中的数据目标,一般用于在层之间传输数据。
- DAO (Data Access Object): 数据拜访目标,用于封装数据拜访逻辑,躲藏底层数据存储细节,供给一组操作数据的办法。
- BO (Business Object): 事务目标,用于封装事务逻辑,一般反映事务流程或事务实体。BO 能够运用 DAO 和 DTO 进行数据操作和传输。
- DTO (Data Transfer Object): 数据传输目标,用于在体系层之间传输数据,一般包括多个字段,能够用于批量传输数据。
- POJO (Plain Old Java Object): 简略的 Java 目标,是一个特定类型的类,没有任何约束或附加条件,能够用于表明各种数据。
需求留意的是,这些缩写词的详细定义或许因项目而异,因而在详细项目中应该依据团队约好和实际需求来运用。
分层范畴模型规约
分层范畴模型规约是一种常用于软件开发中的规划形式,它将整个体系分成多个层次,每个层次担任处理不同的使命。下面是分层范畴模型规约中的几个要害概念:
- 范畴层(Domain Layer):担任定义事务逻辑和数据耐久化操作,并供给 API 给其他运用程序层运用。
- 运用程序层(Application Layer):担任和谐范畴层和表明层之间的交互,并经过定义服务接口,向表明层暴露事务逻辑。
- 表明层(Presentation Layer):担任出现数据给用户,并将用户输入传递给运用程序层进行处理。
- 数据拜访层(Data Access Layer):担任与数据库进行交互,包括读取、写入、更新和删去等操作。
在实践中,分层范畴模型规约能够有不同的变体。比方,能够将运用程序层和表明层合二为一,也能够将数据拜访层和范畴层混合在一起。总之,这种规划形式旨在进步代码的可保护性、可扩展性和可测验性,使体系更易于了解和修正。
PO :(persistant object ),耐久目标
PO(Persistent Object)是指一种在程序运转期间始终存在的目标,与暂时目标(Transient Object)不同,它们会在程序执行完成后被销毁。耐久目标一般与数据库交互,能够被存储和检索。
在面向目标编程中,耐久化是指将目标的状况保存到某个非易失性存储介质中,以便在程序完毕后能够重新康复目标状况。耐久目标是一种特别的目标,它们具有耐久性,即它们的状况能够被永久地保存。这使得程序能够在程序关闭并重新启动后康复之前的状况。
在实际运用中,我们能够经过运用 ORM(Object-Relational Mapping)结构来简化耐久化操作。ORM结构躲藏了底层数据库的细节,使得开发者能够以面向目标的方式来进行数据拜访和操作,进步了代码的可读性和可保护性。
能够看成是与数据库中的表相映射的java目标。运用Hibernate来生成PO是不错的挑选。
VO :(value object) ,值目标
VO(Value Object)又称为值目标,是指一种不行变的、仅由特点值构成的目标。它的首要作用是描绘某个特定的范畴概念,比方日期、时刻、钱银等,或者是一些复合类型的数据结构。
与 PO(Persistent Object)不同,VO 并不具有耐久化才能,它们一般用于封装值或数据,以便在运用程序中进行传递和处理。VO 目标一般被规划成不行变的,这意味着它们的状况不能被修正,因而能够保证目标的一致性和可靠性。
值目标一般具有以下特征:
- 不行变性:值目标一旦创立,其状况就不再改动,所有的特点都是只读的。
- 没有标识:值目标的相等性是经过其特点来确认的,没有唯一的标识符。
- 能够被同享:多个目标能够引证同一个值目标,由于它们的状况是不行变的。
在实践中,值目标经常用于封装一些简略的、根底的数据类型,比方字符串、数字等,以及一些复杂的数据结构,比方调集、列表、树等。值目标能够增加代码的可读性和可保护性,一起还能削减犯错的机会。
一般用于事务层之间的数据传递,和PO相同也是只是包括数据罢了。但应是笼统出的事务目标,能够和表对应,也能够不,这依据事务的需求。
PO只能用在数据层,VO用在商业逻辑层和表明层。各层操作属于该层自己的数据目标,这样就能够下降各层之间的耦合,便于今后体系的保护和扩展。
DAO :(Data Access Objects) ,数据拜访目标接口
DAO(Data Access Objects)是一种数据拜访目标接口,它供给了对某个特定数据源(比方联络数据库、文本文件等)的拜访操作。DAO 一般用于将底层数据存储细节与上层事务逻辑分离,然后进步代码的可重用性和可保护性。
DAO 接口首要包括以下几个方面:
- CRUD 操作:DAO 接口供给了增删改查等根本的数据操作办法。这些办法一般涉及到 SQL 句子的构建、参数类型转换、成果集的映射等操作。
- 事务操控:DAO 接口能够为事务逻辑中需求进行事务操控的办法供给支持。事务操控能够保证数据的一致性和可靠性。
- 反常处理:DAO 接口应该能够处理底层数据存储引发的反常,并将反常传递给调用者,以便做出相应的处理。
- 笼统化:DAO 接口使得事务逻辑能够独立于详细的数据存储完成,然后进步了代码的可移植性和可测验性。
在实际运用中,我们能够经过运用 ORM(Object-Relational Mapping)结构来简化 DAO 的完成。ORM 结构能够自动地生成 SQL 句子、映射查询成果等操作,然后削减了开发者的工作量。一起,在规划 DAO 接口时,还需求考虑数据存储的安全性、功能等因素,以保证运用程序能够正常运转和适应不断变化的事务需求。
BO :(Business Object),事务目标层
BO(Business Object)指的是事务目标层,它是位于运用程序中介于 DAO 层和 Presentation 层之间的一层。BO 层首要担任处理事务逻辑、和谐各个组件之间的交互以及与 Presentation 层进行数据交互。
BO 层一般包括以下几个方面:
- 事务逻辑处理:BO 层担任完成事务规矩和流程,如数据校验、核算、转换等操作。这些事务逻辑或许涉及到多个底层数据源的操作,需求经过调用 DAO 接口来完成。
- 事务操控:BO 层也能够供给事务操控的功能,以保证事务操作的原子性和一致性。BO 层能够将底层 DAO 操作组合成一个完好的事务,并在必要的时候进行回滚操作。
- 目标映射:BO 层担任将底层数据存储的数据模型与上层 Presentation 层的视图模型进行映射。这意味着 BO 层需求处理目标的转换、耐久化、序列化等操作。
- 和谐各个组件:BO 层作为运用程序的中间层,需求和谐 Presentation 层、DAO 层、第三方服务组件等各个组件之间的交互。BO 层能够处理这些组件之间的通讯,然后削减 Presentation 层和 DAO 层之间的耦合度。
在实践中,BO 层一般由一些事务逻辑比较复杂的办法组成,这些办法或许会对多个数据库表进行操作,而且需求进行一定的目标映射和转换。BO 层能够将 Presentation 层与 DAO 层分离,使得运用程序愈加易于保护和扩展。
DTO Data Transfer Object数据传输目标
DTO(Data Transfer Object)是一种数据传输目标,用于在各个层之间传输数据。DTO 一般包括了多个特点,这些特点与某个事务逻辑相关联,而且或许来自于多个数据源。
DTO 首要有以下几个方面的作用:
- 数据传输:DTO 目标用于在 Presentation 层和 BO 层、BO 层和 DAO 层之间传输数据。DTO 目标能够将底层数据存储的数据模型转换成上层事务逻辑需求的视图模型,然后完成数据的传输和交互。
- 削减网络负载:DTO 目标能够削减网络负载,由于它们只包括最小必要的特点信息。这使得数据传输过程变得愈加高效,特别是在分布式体系中。
- 躲藏底层数据结构:DTO 目标能够躲藏底层数据结构的细节,然后进步代码的可保护性和可扩展性。DTO 目标能够封装底层数据结构,使得上层组件不用关怀数据结构的详细完成细节。
- 可序列化:DTO 目标能够被序列化和反序列化,然后在不同进程或者不同机器之间进行数据传输。这使得运用 DTO 目标能够完成跨平台的数据传输。
在实践中,DTO 目标一般由开发者手动编写,这些目标的类型和特点应该与事务逻辑密切相关。DTO 目标应该尽量简略,而且只包括必需的特点信息,避免数据冗余和网络负载过大的问题。一起,在规划 DTO 目标时,开发者还需求考虑目标的可重用性和扩展性,以满足不断变化的事务需求。
POJO :(Plain Old Java Objects),简略的Java目标
POJO(Plain Old Java Objects)指的是简略的 Java 目标,它们是一种没有任何约束的一般 Java 目标,不依赖于特定的结构或接口。POJO 目标一般不包括任何专有的基类或接口,也不需求遵循任何提前定义的规矩或契约。
POJO 目标首要具有以下几个特点:
- 简略性:POJO 目标非常简略,一般只包括数据特点和拜访办法。
- 可重用性:由于 POJO 目标没有特定的依赖联络和规范,因而它们能够轻松地在不同的运用程序中进行复用。
- 可测验性:POJO 目标不依赖于任何特定的结构或接口,因而能够轻松地进行单元测验和集成测验。
- 可扩展性:由于 POJO 目标没有任何预订的规矩或契约,因而能够依据事务需求进行灵敏的扩展和修正。
POJO 目标在 Java 开发中非常常见,它们被广泛运用于各种范畴,比方企业运用、Web 开发、移动运用等。经过运用 POJO 目标,开发者能够使代码愈加简略、可重用、可测验和可扩展,然后进步开发效率和代码质量。
联络作者vx:xiaoda0423
仓库地址:github.com/webVueBlog/…