Java实体类

您所在的位置:网站首页 JAVA的定义类有哪些 Java实体类

Java实体类

2024-01-27 00:03| 来源: 网络整理| 查看: 265

Java实体类(entity) 一、前言(项目代码引申)二、实体类的众多理解三、实体类的作用四、实体类的书写规范五、序列化的必要性

一、前言(项目代码引申)

在一个开发的android项目中,使用到了Entity类 在这里插入图片描述 其中SecurityDomain是一个架构模板可忽略,其余四个Entity类是根据实际功能需求扩写的,项目中这四个实体类在(1)对应的Fragment类(2)Repository(3)VehicleViewModel中使用。 这四个Entity类中包含构造方法,对应开关(Switch)的功能写了is和set方法,对应设置选项的功能写了get和set方法。

set ,get完全是自我规定的,就是设置初值和获得值的意思.你也可以修改成其他字符.但是用set ,get还是要好些,因为你能通过单词理解你写的代码的意思,方便阅读而已。

这边以包含了is,set,get方法的CommonEntity为例,看一下代码:

public class CommonEntity { private int drivingMode; private int lampMode = -1; private boolean epbRelease; private boolean escSwitch; private boolean autoHoldSwitch; public CommonEntity(int drivingMode, int lampMode, boolean epbRelease, boolean escSwitch, boolean autoHoldSwitch) { this.drivingMode = drivingMode; this.lampMode = lampMode; this.epbRelease = epbRelease; this.escSwitch = escSwitch; this.autoHoldSwitch = autoHoldSwitch; } public boolean isEscSwitch() { return escSwitch; } public void setEscSwitch(boolean escSwitch) { this.escSwitch = escSwitch; } public boolean isAutoHoldSwitch() { return autoHoldSwitch; } public void setAutoHoldSwitch(boolean autoHoldSwitch) { this.autoHoldSwitch = autoHoldSwitch; } public boolean isEpbRelease() { return epbRelease; } public void setEpbRelease(boolean epbRelease) { this.epbRelease = epbRelease; } public int getDrivingMode() { return drivingMode; } public void setDrivingMode(int drivingMode) { this.drivingMode = drivingMode; } public int getLampMode() { return lampMode; } public void setLampMode(int lampMode) { this.lampMode = lampMode; } }

在设计完这四个实体类后,对实体类的具体作用及相关知识产生了好奇,便去找了相关的文章认真理解了一下。学习后,对比发现自己写的Entity实体类相对简单,对实体类(Entity)的具体内容也有了更深的理解。

二、实体类的众多理解

对java实体类的众多理解:

A .就是属性类,通常定义在model层里面 B. 一般的实体类对应一个数据表,其中的属性对应数据表中的字段。 好处: 1.对对象实体的封装,体现OO思想。 2.属性可以对字段定义和状态进行判断和过滤 3.把相关信息用一个实体类封装后,我们在程序中可以把实体类作为参数传递,更加方便。 C. 说白了就是为了让程序员在对数据库操作的时候不用写SQL语句 D. 就是一个数据库表生成一个类 这样做对数据库操作起来方便 编写代码较少 提高效率 可以使程序员专注逻辑关系 E. 实体类就是把对某一个表的操作全写在一个类中. F. 在Java开发中经常要定义一些实体类,这些类的定义的好坏会直接影响,编写代码的质量和难易程度 G. 实体类中都是实例对象,实例对象在jvm的堆区中开辟了一个该对象引用空间,并且让该引用指向某个实例,类声明只是在jvm的栈去中开辟了一个该对象引用,没有让该引用做任何指向. 例如 : 1.String str; 2.String str = new String (“dgfgg”); 1中的只是一个引用,说明str应该指向一个String 类型的实例,但还没对str和堆区的实例做具体的指向.也就是说它还没有指向某个实例. 而2中的即定义了一个引用(str)又对str做了具体的指向,它指向的内容就是后面new出来的String 实例.

总结:实体是就是Java中的O/R Mapping映射,即数据库中的一个表映射成对应的一个Java类,其中还有一个映射文件。给定一个较复杂的实体关系(如一对一,一对多,多对多),应该熟练地写出实体类!!

三、实体类的作用

实体类其实就是俗称的POJO,这种类一般不实现特殊框架下的接口,在程序中仅作为数据容器用来持久化存储数据用的

POJO(Plain Old Java Objects)简单的Java对象

它的一般格式就是

public class A{ private String id; public String getId(){ return this.id; } public void setId(String id){ this.id = id; } }

其实这样写的意义就在于封装,id作为类A的成员变量,也称属性,一般情况下拥有读和写的能力,我们将id设为private,则外部无法对其直接进行操作,同时通过set方法提供了外部更改其value的方法,又通过get方法使外界能读取该成员变量的值。

这边提到POJO,正好最近在阅读阿里巴巴Java开发手册,关于POJO的编程规范之命名规约做一点补充: 在这里插入图片描述

四、实体类的书写规范

在日常的Java项目开发中,entity(实体类)是必不可少的,它们一般都有很多的属性,并有相应的setter和getter方法。entity(实体类)的作用一般是和数据表做映射。所以快速写出规范的entity(实体类)是java开发中一项必不可少的技能。

在项目中写实体类一般遵循下面的规范: 1、实体类的名字尽量和数据库的表的名字对应相同。 2、实现序列化,即实现java.io.Serializable接口。 3、实体类有属性和方法,属性对应数据库中表的字段,主要有getter和setter方法,即: (1)根据你的设计,定义一组你需要的私有属性。 (2)根据这些属性,创建它们的setter和getter方法。 4、提供无参数的构造(方法)器。 5、提供带参数的构造(方法)器。 6、实体类还应该有个属性serialVersionUID,即赋予其一个版本号。例如:private static final long serialVersionUID = -6125297654796395674L; 7、重写父类中的eauals()方法和hashcode()方法。(如果需要涉及到两个对象之间的比较,这两个功能很重要。) 8、属性一般是private类型,方法为public类型,对于数据库自动生成的ID字段对应的属性的set方法应为private。

一个实体类(entity)例子:具体的细节都已用注释标注。

class Student implements 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; } } 五、序列化的必要性

Java中,一切都是对象,在分布式环境中经常需要将Object从这一端网络或设备传递到另一端。这就需要有一种可以在两端传输数据的协议。Java序列化机制就是为了解决这个问题而产生。

Java对象序列化不仅保留一个对象的数据,而且递归保存对象引用的每个对象的数据。

Java串行化技术可以使你将一个对象的状态写入一个Byte流里,并且可以从其它地方把该Byte流里的数据读出来,重新构造一个相同的对象。这种机制允许你将对象通过网络进行传播,并可以随时把对象持久化到数据库、文件等系统里。Java的串行化机制是RMI、EJB等技术的技术基础。用途:利用对象的串行化实现保存应用程序的当前工作状态,下次再启动的时候将自动地恢复到上次执行的状态。

序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。

对于一个存在于Java虚拟机中的对象来说,其内部的状态只保持在内存中。JVM停止之后,这些状态就丢失了。在很多情况下,对象的内部状态是需要被持久化下来的。提到持久化,最直接的做法是保存到文件系统或是数据库之中。这种做法一般涉及到自定义存储格式以及繁琐的数据转换。对象关系映射(Object-relationalmapping)是一种典型的用关系数据库来持久化对象的方式,也存在很多直接存储对象的对象数据库。对象序列化机制(objectserialization)是Java语言内建的一种对象持久化方式,可以很容易的在JVM中的活动对象和字节数组(流)之间进行转换。除了可以很简单的实现持久化之外,序列化机制的另外一个重要用途是在远程方法调用中,用来对开发人员屏蔽底层实现细节。

参考:https://blog.csdn.net/qijingwang/article/details/80353829



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3