1.使用实体类的经验:

常用的四种
一、实体类应该实现java.io.Serializable序列化接口。(私有变量一般实现的话调用的是选择Serializable,选择int或者lang太局限了,因为数值可以是string等其他类型类型)

image.png
二、实体类应该有个无参的构造方法。
三、实体类应该有个有参(所有的参数)的构造方法。
四、实体类有属性和方法,属性对应数据库中表的字段,方法主要有getter和setter方法。

五、实体类的名字尽量和数据库的表的名字对应相同。
六、实体类还应该有个属性serialVersionUID。
例如:private static final long serialVersionUID = -6125297654796395674L;
七、属性一般是private类型,方法为public类型,对于数据库自动生成的ID字段对应的
属性的set方法为private。

2. 序列化的作用

  • 序列化可以将对象的字节序列存持久化:可以将其保存在内存、文件、数据库中(见下图);
  • 可以在网络上传输对象字节序列
  • 可用于远端程序方法调用

序列化 (Serialization):是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
简单说就是为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存Object States,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。
image.png

3. 实现序列化

  • ObjectOutputStream类下的void writeObject(Object obj)方法用于将一个对象写入对象输出流,也就是序列化;
  • ObjectInputStream类下的Object readObject()方法用于读取一个对象到输入流,也就是反序列化。

image.png

序列化的作用2

序列化是针对自定义类型或者零散数据,好du处就是让数据方便存储和传输(传递),你可以理解为将零散的字母变成一个字符串(当然实际序列化过程并不是这么简单),可以统一存储和传输,而标准序列化传递后,还可以依次读取出来。
序列化的目的是标准化和可存储,通常用于数据库、文件操作以及和系统标准化函数进行通信。
1、以某种存储形式使自定义对象持久化;
2、将对象从一个地方传递到另一个地方。
3、使程序更具维护性。

简单的说:

就像你寄一箱饼干,因为体积太大,就全压成粉末紧紧地一包寄出去,这就是序列化的作用。

使用序列化的三个场景

a)当你想把的内存中的对象保存到一个文件中或者数据库中时候;
b)当你想用套接字在网络上传送对象的时候;
c)当你想通过RMI传输对象的时候;

我们应该都用过各种序列化(serialization)的方法(如Python中的pickle.dumps),甚至自己也写过一些序列化的小工具。
序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程

小节
序列化操作的本质是将对象中的字节组织成(顺序的)字节流的过程。
序列化的主要目的包括四点:
实现数据的跨语言使用
实现数据的跨平台使用
数据去内存地址
降低磁盘存储空间
实现后两者目的的根本原因是:对象对内存地址的操作。

大多数情况下实体类就是数据库在Java代码中对应的东西.

实体类主要是作为数据管理和业务逻辑处理层面上存在的类别; 它们主要在分析阶段区分 实体类的主要职责是存储和管理系统内部的信息,它也可以有行为,甚至很复杂的行为,但这些行为必须与它所代表的实体对象密切相关。

这段话看起来不太好懂,应该结合实体类的作用来看:
实体类的作用(需要面向对象的一点很基本的知识):

实体类就是一个载体。

现在的设计差不多都是一张表就等于业务里面的一个类。一条记录(一般一行数据)是一个对象,一行中的一列就是这个对象的一个属性。

所以我们在操作某个表时(比如更改这个表的信息),我们就可以在前台定义一个这样的对象,然后将其对应的属性赋值,然后传到后台。

这样后台就可以拿到这个对象的所有值了——不用一个一个属性当参数传过来,只要传一个这个类的对象就好了,也就是说只要一个参数就好了。好处不言而喻。

而这种前台对象到后台数据库的联系,我们是借由框架、配置文件来配置实现的,很方便快捷。并不需要自己手动编程实现。

简而言之,(大多数情况下)实体类就是数据库在Java代码中对应的东东。