bean包、entity包、mode包、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 代表一个对象模块
————————————————
版权声明:本文为CSDN博主「liaowenxiong」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liaowenxiong/article/details/120324186

posted @ 2022-09-08 17:07  comeluder  阅读(460)  评论(0编辑  收藏  举报