Java中的实体类(entity class)和model

这篇具有很好参考价值的文章主要介绍了Java中的实体类(entity class)和model。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、什么是实体类(entity class)

编写代码时,经常会遇到一些具有“现实”意义的“个体”,eg:一个用户、一首歌曲、一条评论等。它们在逻辑上是完整的整体,具有相似的结构,但是却因为“属性”的不同而不同。

下面看一个典型的Entity class:

//Entity类定义
public class UserEntity {
    public String name;
    public int age;
    public String address;
}

//Entity对象
UserEntity john = new UserEntity();
john.name = "John";
john.age = 20;
john.address = "polyu, Hong Kong";
总结:
  • 一个Entity类,代表了某一种“个体”,类中的属性则是该“个体”的具体体现。如UserEntity类,里面有name、age属性,用这些属性“描述”该种“个体”。

  • Entity类的具体对象,如john对象,代表了一个具体的实体。一般来说,一个具体的Entity类对象所代表的实体是唯一的。

  • 通常,Entity的具体对象(如john对象)对应数据库的一行数据

  • Entity是代码中操作数据的“最小单元”。

  • 实体类的作用一般是与数据库做映射。

写实体类的规范:
  1. 根据设计,定义一组需要的private属性。

  1. 根据这些属性,创建它们的setter和getter方法。

  1. 提供带参数的构造器和无参数的构造器。

  1. 重写toString、equals、hashcode等方法(optional)。

  1. 实现序列化(Serializable接口、Parcelable接口也可以),并赋予一个版本号。

下面是一个Entity class的例子:

class Student implements Serializable{  /实现Serializable接口
      /**
      * 版本号
      */
     private static final long serialVersionUID = 1L;
     //定义的私有属性
     private int id;
     private String name;
     private int age;
     private double score;
     //无参数的构造器
     public Student(){
         
     }
     //有参数的构造器
     public Student(int id,String name,int age, double score){
         this.id = id;
         this.name = name;
         this.age = age;
         this.score = score;
     }
     //创建的setter和getter方法
     public int getId() {
         return id;
     }
     public void setId(int id) {
         this.id = id;
     }
     public String getName() {
         return name;
     }
     public void setName(String name) {
         this.name = name;
     }
     public int getAge() {
         return age;
     }
     public void setAge(int age) {
         this.age = age;
     }
     public double getScore() {
         return score;
     }
     public void setScore(double score) {
         this.score = score;
     }
     //由于id对于学生这个类是唯一可以标识的,所以重写了父类中的id的hashCode()和equals()方法。
     @Override
     public int hashCode() {
         final int prime = 31;
         int result = 1;
         result = prime * result + id;
         return result;
     }
     @Override
     public boolean equals(Object obj) {
         if (this == obj)
             return true;
         if (obj == null)
             return false;
         if (getClass() != obj.getClass())
             return false;
         Student other = (Student) obj;
         if (id != other.id)
             return false;
         return true;
     }
     
 }

二、什么是Model

我们经常见到“Model”,如MVC模式中的M就是指“Model”,MVVM中的“Model-View-ViewModel”,数据库抽象层中的“Model”等。那么什么是model呢?

通常,Model有如下几种用法:

  • 等价于Entity,完全不具备其他业务逻辑代码。

  • 当成数据库接口层,就是将数据库的读写、增删、查改都封装在Model中,经常出现“getUserById”这样的写法。

  • 当成纯粹的业务逻辑类。

Model是模型,而不是“数据”,Model应该是利用Entity实体,来组合、处理、整合更上层、更抽象数据的类。是基于Entity的更高层的数据抽象与处理。

下面看一个model class:

class UserListModel{
    private UserEntity[] users;

    //构造函数、初始化用户列表等

    UserEntity getUserByName(String name){
        //查找...
    }

    void transformUserAddressFormat{
        //转换格式地址
    }
}

三、entity和model

这两种说法,一般是根据上下文来的,eg:Model是因为有MVC、MVVM这种场景,叫做Model,这里的Model是一种职责。Entity则更接近是一种表达业务概念的实体,eg:一个User、一个Order等等。只是在不同的地方,不同的命名方式罢了。(二者有时候可以混为一谈)


四、实体类要实现序列化和反序列化

有两种方式:1.实现Serializable接口;2.实现Parcelable接口

序列化和反序列化的介绍,请参考下面这篇:

https://blog.csdn.net/SakuraMG/article/details/128654320?spm=1001.2014.3001.5501

Serializable接口和Parcelable接口的介绍,请参考下面这篇文章:

https://blog.csdn.net/SakuraMG/article/details/128672560文章来源地址https://www.toymoban.com/news/detail-600083.html


部分内容来源于:
http://tutuge.me/2015/03/01/Entity%E5%92%8CModel%E7%9A%84%E4%B8%8D%E5%90%8C-%E5%85%B3%E4%BA%8E%E4%BB%A3%E7%A0%81%E7%9A%84%E6%95%B0%E6%8D%AE%E5%B1%82/
https://www.cnblogs.com/echoer/p/4567240.html

到了这里,关于Java中的实体类(entity class)和model的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GameFramework框架详解之 Entity实体

    GameFramework中Entity,一般用于游戏运行时动态加载的游戏对象,如角色,怪物,武器,技能,子弹,特效等。 一般来说,我们想创建一个实体,最简单的方法当然是Resource.Load()+Instantiate(),然后放到合适的位置,播放合适的动画即可。 但是GameFramework却给每个实体定义了一个

    2024年02月13日
    浏览(50)
  • Springboot实体类entity相关知识点详解

    目录 entity实体类相关知识点详解:       解释1:上面代码使用的注解是 Lombok 提供的注解,用于简化实体类的开发。       解释2:属性的注释自动生成问题:                解释3:java序列化反序列化,实体类实现Serializable接口:                     java序列化和反

    2024年02月08日
    浏览(48)
  • Unity Game FrameWork—模块使用—Entity实体

    官方解释:我们将游戏场景中,动态创建的一切物体定义为实体。此模块提供管理实体和实体组的功能,如显示隐藏实体、挂接实体(如挂接武器、坐骑,或者抓起另一个实体)等。实体使用结束后可以不立刻销毁,从而等待下一次重新使用。 先看下实体组件的参数: Enab

    2024年02月05日
    浏览(40)
  • Spring Data访问Elasticsearch----实体回调Entity Callbacks

    Spring Data基础结构提供了钩子,用于在调用某些方法之前和之后修改实体。这些所谓的EntityCallback实例提供了一种方便的方式来检查并可能以回调风格修改实体。 EntityCallback看起来很像一个专门的ApplicationListener。一些Spring Data模块发布特定于存储的事件(如BeforeSaveEvent),允许

    2024年03月21日
    浏览(43)
  • XML External Entity-XXE-XML实体注入

    概念 本课程介绍如何执行 XML 外部实体攻击以及如何滥用和防范该攻击。 目标 用户应该具备 XML 的基本知识 用户将了解 XML 解析器的工作原理 用户将学习如何执行 XXE 攻击以及如何防范它。 XML 实体允许定义标签,在解析 XML 文档时这些标签将被内容替换。一般来说,实体分

    2024年02月06日
    浏览(39)
  • Dynamics 365: 详解虚实体(Virtual Entity) 从0到1

    从Dynamics 365 for Customer Engagement 9.0开始,虚实体通过在Dynamics 365 Customer Engagement中无缝地将数据表示为实体,实现了外部系统中的数据集成。它无需数据复制,通常也无需自定义编码。 虚实体有如下的限制,但除了下面的这些限制外,它和其它的那些自定义实体没有区别: 数

    2024年02月07日
    浏览(42)
  • 解决 nginx 413 Request Entity Too Large(请求实体太大)

    最近把前端部署到nginx上,上传大文件时,报413错误,具体如下 我们可以看到请求的body的大小,在Content-Length后显示,Nginx默认的request body为1M,小于我们上传的大小         找到自己主机的nginx.conf配置文件,打开 在http{}中加入 client_max_body_size 500m; 然后重启nginx /etc/init.d/n

    2024年02月07日
    浏览(42)
  • Cesium 视角切换到实体(entity)/ dataSources / 定位到模型(3DTiles)

    Cesium 的 camera.flyTo 是不可以直接飞到实体的。但是 viewer.flyTo 可以直接飞到实体。 viewer.flyTo (target, options) :将相机飞到提供的实体、实体或数据源。如果数据源仍在加载过程中或可视化仍在加载中,则此方法在执行飞行之前等待数据准备好 viewer.flyTo 的 target` 可以是:要查看

    2024年02月11日
    浏览(43)
  • Java-json相关转换,JSONObject与实体类/map互转、List/List<map>和JSONArray互转、获取JSONObject中的key value、字符串String转换等

    博客背景是Java开发。json相关的转换、取值等在日常开发中经常使用,但有时候还是会忘记or遇到些奇奇怪怪的问题。以此记录,提醒自己~不定期更新~ 实体类和JSONObject互转 Map和JSONObject互转 String转JSONObject 实体类转JSON字符串时不过滤NULL空值 获取JSONObject中的key value List和

    2024年02月12日
    浏览(80)
  • spaCy库的实体链接踩坑,以及spaCy-entity-linker的knowledge_base下载问题

    1)问题 写了一个实体链接类,代码如下: 结果总是提示 ‘ entityLinker ’ 不能找到,明明是有这个模块的: 2)解决方法 后来发现,在从自己的电脑移动到服务器的时候,下载requirements.txt的时候,包 spacy-entity-linker 并没有被写入到requirements.txt依赖中。 因此,安装 spacy-enti

    2024年02月09日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包