我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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


部分内容来源于:
http://tutuge.me/2015/03/01/Entity和Model的不同-关于代码的数据层/
https://www.cnblogs.com/echoer/p/4567240.html

来源地址:https://blog.csdn.net/SakuraMG/article/details/128652284

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JavaHibernate中的持久化类和实体类关系

Hibernate是一种Java对象关系映射框架,通过持久化类将Java对象映射到数据库表中。持久化类需要实现无参构造器、具有标识属性和使用注解或XML进行映射。Hibernate通过Session来管理对象的状态,包括临时状态、持久化状态和游离状态
2023-05-18

java中将一个实体类复制到另一个实体类的三种方法

这两天在做发票识别时,遇到一个问题,有一张发票表(假设为invoice_OCR_success)和一张我根据发票表新建的表(假设为invoice_OCR_fail),两张表有些字段名是相同的,有时需要把其中一张表的实例在另一张表里保存一份,
2023-08-16

java项目中的实体类为什么需要实现序列化

这篇文章给大家介绍java项目中的实体类为什么需要实现序列化,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。当客户端访问某个能开启会话功能的资源,web服务器就会创建一个HTTPSession对象,每个HTTPSessi
2023-05-31

java反射遍历实体类属性和类型,并赋值和获取值的简单方法

实例如下:import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;i
2023-05-31

Java中多态和抽象类的实现方式

这篇文章主要讲解了“Java中多态和抽象类的实现方式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中多态和抽象类的实现方式”吧!  多态  1.要实现多态,那么必须存在父子关系(继承
2023-06-02

Java中的抽象类和接口实例分析

这篇文章主要介绍了Java中的抽象类和接口实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java中的抽象类和接口实例分析文章都会有所收获,下面我们一起来看看吧。抽象类什么是抽象类?类和类之间有共同特征,
2023-06-29

java只返回实体类中的部分字段问题如何解决

这篇文章主要介绍了只返回实体类中的部分字段问题如何解决,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。如何只返回实体类中的部分字段在实体类上添加注解@JsonInclude(JsonInclude.Include.NON_
2023-07-06

Java中使用Thread类和Runnable接口实现多线程的区别是什么

这篇“Java中使用Thread类和Runnable接口实现多线程的区别是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“
2023-07-02

Java-json相关转换,JSONObject与实体类/map互转、List/List<map>和JSONArray互转、获取JSONObject中的key value、字符串String转换等

博客背景是Java开发。json相关的转换、取值等在日常开发中经常使用,但有时候还是会忘记or遇到些奇奇怪怪的问题。以此记录,提醒自己~不定期更新~ 文章目录 1、JSONObject相关实体类和JSONObject互转Map和JS
2023-08-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录