bean包、entity包、mode包、domain包的区别

文章目录

  • bean
  • entity
  • model
  • domain
  • 总结

bean

包含的都是 JavaBean。

JavaBean 是一种 Java 语言写成的可重用组件。为写成 JavaBean,类必须是具体和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成属性。JavaBean 主要指的是一种规范,即包含一组 set 和 get 方法的类。JavaBean 可以使应用程序更加面向对象,可以把数据封装起来,把应用的业务逻辑和显示逻辑分离开,降低了开发的复杂程度和维护成本。

和 Entity Bean 的区别是,JavaBean 可以包含业务逻辑代码,并且不一定与数据表对应。

entity

包含的都是实体 bean,即 Entity Bean。

entity 的意思就是实体的意思,所以也是最常用到的,entity 包中的类是必须和数据库中的表相对应的,比如说:数据库有个 user 表,字段有 bigint 类型的 id,varchar 类型的姓名,那么 entity 包中的 User 类也必须是含有这两个字段的,且类型必须一致。不能数据库存的是 bigint 类型,User 类里的对应属性是 String 类型。这样做的好处是实体类和数据库保持一致,当用到 hibernate 或 mybatie 框架来操作数据库的时候,操作这个实体类就行,写 sql 之前不需要再做数据类型的处理。

model

model 大家不陌生,都知道是模型的意思,当用 model 当包名的时候,一般里面存的是实体类的模型,一般是用来给前端用的。比如:前端页面需要显示一个 user 信息,user 包含姓名、性别、所在地区,这些信息存在数据库的时候,姓名直接存姓名,但是性别和所在地区一般会用数据字典的编号存到数据库,比如:1 代表男,2 代表女,数据库存的就是 1 或 2,如果用 entity 的话,把 1、2 返回给前端,前端可能并不知道这是什么玩意,就算前端知道 1 代表男,2 代表女,也需要额外写一个 js 进行判断和相关的数据转换处理。如果后来数据库变动了,1 代表女,2 代表男,前端的 js 又需要重新写,很显然这样不利于维护。所以就需要 model 来解决,后端从数据库取了数据转化为前端需要的数据后再传给前端,前端就不需要对数据进行额外的处理,直接显示就行了。还有一种情况,数据库里面的 user 表字段有很多个,但是前端页面只需要显示姓名,如果把 entity 全部传给前端,无疑传了很多没用的数据。这时候 model 就很好的解决了这个问题,前端需要什么数据,model 就包含什么数据就行了。

model 是 MVC 中的概念,其中的类大部分是 POJO 类,用来给 View 组件提供要展示的数据,例如,用户个人信息界面,就可以将个人有关的所有信息封装成一个 POJO 对象,再将这个对象返回给客户端,客户端就可以解析里面的数据进行展示了。

一个 POJO 类如果都是用来提供展示数据的,那么就叫 VO,如果是用来传递数据的,就叫 DTO。例如,可以在视图层中,将用户请求参数数据封装成一个 VO 对象,再封装成 DTO 对象,再调用业务层的方法,将 DTO 对象作为参数进行传递,业务层根据 DTO 的数据进行相关业务的处理,再将数据封装成 DO 对象,再调用 DAO 的相关方法,将 DO 对象作为参数传递。DAO 对象就可以根据 DO 的数据对数据库进行操作(增删改查)。

domain

domain 这个包国外很多项目经常用到,字面意思是域的意思。比如一个商城的项目,商城主要的模块就是用户,订单,商品三大模块,那么这三块数据就可以叫做三个域,domain 包里存放的就是这些数据,表面上这个包和 entity 和 model 包里存的数据没什么区别,其实差别还是挺大的,特别是一些大型的项目。比如一个招聘网站的项目,最重要的对象就是简历了,那么简历是怎么存到数据库的呢,不可能用一张表就能存的,因为简历包含基本信息和工作经验,项目经验,学习经验等。基本信息可以存在简历表,但是涉及到多条的就不行,因为没人知道有多少条工作经验,项目经验,所以必须要单独建工作经验表和项目经验表关联到简历基本信息表。但是前端页面是不关心这些的,前端需要的数据就是一个简历所有的信息,这时就可以用 domain 来处理,domain 里面的类就是一个简历对象,包含了简历基本信息以及工作经验,项目经验等。这样前端只需要获取一个对象就行了,不需要获取基本信息的同时,还要从基本信息里面获取简历编号,再拿着简历编号去获取相关的工作经验、项目经验等信息。

当然,model 也是可以达到 domain 的效果。这个完全是看个人喜好和项目的整体架构,因为创建不同的 package 的作用本来也就是想把项目分成不同的层,便于管理和维护。如果你乐意,你可以创建 entity 包,然后在里面存图片,创建 images 文件夹,里面存 js,只是你自己看得懂还不够,你还要保证你的团队不会打死你。所以开发的时候,建类建包的命名规范性还是很重要的。

总结

那么三句话总结下entity、model、domain的不同:
1.entity 字段必须和数据库字段一样
2.model 前端需要什么我们就给什么
3.domain 代表一个对象模块

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

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

相关文章

java修改数据历史记录_记录更新(Java数据类)

java修改数据历史记录最近几个月,有一些与“ Java数据类”(又称为“记录”)有关的更新。 正如我在“ JavaFX,Valhalla,数据类和Java的浮点更新 ”一文中简短提到的那样, Brian Goetz的“ Java数据类 ”“探…

idea配置Maven的本地仓库(打开新的项目时自动更新本地仓库的位置)

配置Maven的本地仓库 一、打开目录然后选择 Other Settings → Settings for New Projects 二、配置自己的文件路径和本地仓库 三、设置每次自动更新本地仓库

java导出数据透视表_使用数据库中的Java流制作数据透视表

java导出数据透视表来自数据库行和表的原始数据不能为人类读者提供太多了解。 相反,如果我们对数据执行某种聚合,则人类更有可能看到数据模式 在向我们展示之前。 数据透视表是聚合的一种特定形式,我们可以在其中应用排序,求平均…

Java程序和MySQL数据库中关于小数的保存问题

文章目录MySQL 中的小数类型decimaldoublefloatJava 中的小数类型floatdoubleBigDecimal金额的计算MySQL 中的小数类型 decimal MySQL 使用 decimal 保存高精度的小数,可以设置保留的小数个数。decimal(m,d),表示该值一共显示 m 位整数,其中…

javafx 遮罩_JavaFX技巧31:遮罩/剪切/ Alpha通道

javafx 遮罩选择条 最近,我不得不实现一个自定义控件,该控件使用户可以从项目列表中选择一个项目。 此“ SelectionStrip”控件必须水平放置项目,并且在项目过多的情况下,允许用户左右水平滚动。 该控件将在空间受限的区域中使用&…

IntelliJ IDEA for Mac如何查看某个方法的实现

如果没有子类,按住 Command,鼠标点击方法名会跳到声明定义方法的地方;如果是接口或者父类,那么只会跳至接口或者父类声明方法的地方,想要看子类的实现,可以点击鼠标右键,选择 【Go To】 -> 【…

日志管理工具_您需要了解的6种日志管理工具(以及如何使用它们)

日志管理工具如果没有正确的工具来汇总和解析您的日志数据,则几乎不可能找到并了解所需的信息。 日志有无穷的用途,因为日志本身是无止境的。 应用程序日志,安全日志,BI日志, 林肯日志 (好吧,也…

Spring半注解半Xml

一、 Component 1.Component 标记了注解, 默认的名称是:简单类名,首字母小写UserDaoImpl -> userDaoImplUserServiceImpl -> userServiceImplComponent可以使用value属性指定对象的名称,相当bean标签的id属性 Component注解…

JDK 命令之 javadoc -- 生成API文档

文章目录命令简介命令选项中文乱码javadoc 命令实例进入源代码文件所在目录,解析指定的源代码文件,生成 API 文档解析指定包下的所有源码文件,生成 API 文档指定源文件根目录,再指定具体的包路径,解析其中的源码文件&a…

apache.camel_带有Spring Boot 2支持的Apache Camel 2.22发布

apache.camel今天,我们发布了最新的Apache Camel 2.22.0版本 ,这是第一个正式完全支持Spring Boot 2的版本。这是一项重大的工作,因为针对像Apache Camel这样的大型框架将Spring Boot v1升级到v2付出了很多努力–感谢骆驼队和他们的贡献。 对…

纯注解的开发

使用纯注解开发 目录结构 JdbcConfiguration package com.itheima.Config;import com.mchange.v2.c3p0.ComboPooledDataSource; import org.apache.commons.dbutils.QueryRunner; import org.springframework.beans.factory.annotation.Value; import org.springframework.co…

IntelliJ IDEA forMac 如何生成项目的javadoc(API文档)

1.在菜单栏,点击 Tools -> Generate JavaDoc… 2.根据你自己的需要,设置解析源文件的范围、设置文档输出目录、设置资源的访问权限范围、字符编码、堆内存大小等。

vaadin_Vaadin Flow –奇妙的鹿

vaadin您可能知道,Vaadin是Java上最受欢迎的Web框架之一: https://zeroturnaround.com/rebellabs/java-web-frameworks-index-by-rebellabs/ https://javapipe.com/hosting/blog/best-java-web-frameworks/ 最近发布了此Web UI开发框架的新版本– Vaa…

Spring和Junit整合

一、引入依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.0.2.RELEASE</version></dependency>二、在测试类中修改 &#xff08;1&#xff09;不带有配置文件的修改…

什么是stub文件_stub code

存根, 占位代码&#xff0c;占坑代码&#xff0c;桩代码&#xff0c;粘合代码&#xff0c;残存代码, 指满足形式要求但没有实现具体功能的占坑/代理代码。 stub code 给出的实现是临时性的/待编辑的。它使得程序在结构上能够符合标准&#xff0c;又能够使程序员可以暂时不编辑…

子类重写父类变量_为什么在子类中不重写超类的实例变量

子类重写父类变量当我们在父类和子类中创建一个具有相同名称的变量&#xff0c;并尝试使用持有子类对象的父类引用访问它时&#xff0c;我们会得到什么&#xff1f; 为了理解这一点&#xff0c;让我们考虑下面的示例&#xff0c;在该示例中&#xff0c;我们在Parent和Child类中…

Spring基于 XML 的声明式事务控制(配置方式)

一、引入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4…

javadoc - Java API 文档生成器(Windows版本)

文章目录简介命令语法结构Javadoc Doclets术语带文档的类引用类外部引用类源文件源代码文件包注释文件概述注释文件其他未处理文件生成的文件基本内容页交叉参考页支持文件HTML 框架生成的文件结构文档注释注释源代码JAVADOC 标记author name-textdeprecated deprecated-textex…

光缆故障测试_简单的测试可以防止最严重的故障

光缆故障测试错误处理是软件开发中最困难且被忽略的部分之一&#xff0c;而且如果系统是分布式的&#xff0c;那么这将变得更加困难。 不错的论文写在“ 简单测试可以预防最关键的故障” 主题上。 每个开发人员都应该阅读本文。 我将尝试总结本文的主要内容&#xff0c;但建议…

使用aop解决事务问题(xml版)

一、引入依赖 pom.xml代码&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http:…