`

探索实体类存在的真正意义

    博客分类:
  • 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方法使外界能读取该成员变量的值。(必须有set,get方法)

 

 

二.序列化的必要性

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

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

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

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

 

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

 

三.我们应该这样用实体类

1.作为table的entity

 

public class Category {

    private Integer id;
    @JSONField(name="nameCN")
    private String cateNameCN;
    @JSONField(name="nameEN")
    private String cateNameEN;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getCateNameCN() {
        return cateNameCN;
    }

    public void setCateNameCN(String cateNameCN) {
        this.cateNameCN = cateNameCN;
    }

    public String getCateNameEN() {
        return cateNameEN;
    }

    public void setCateNameEN(String cateNameEN) {
        this.cateNameEN = cateNameEN;
    }

    public Category() {
        super();
    }

    public Category(Integer id, String cateNameCN, String cateNameEN) {
        super();
        this.id = id;
        this.cateNameCN = cateNameCN;
        this.cateNameEN = cateNameEN;
    }

    public static Category fromResultSet(ResultSet rs) throws SQLException {
        return new Category(rs.getInt("Id"), rs.getString("cateNameCN"), rs.getString("cateNameEN"));
    }

 2.request和response中用于接收参数的entity

 

 

public class PlatformRequestHeader {
    @JSONField(name = "uid")
    private String userId;
    @JSONField(name = "clid")
    private String clientId;
    @JSONField(name = "cid")
    private Integer companyId;
    @JSONField(name = "uip")
    private String userIp;
    @JSONField(name = "rid")
    private String requestId;

    public PlatformRequestHeader() {
        this.userId = "";
        this.clientId = "";
        this.companyId = -1;
        this.userIp = "";
        this.requestId = "";
    }

    public PlatformRequestHeader(String userId, String clientId, Integer companyId, String userIp, String requestId) {
        this.userId = userId;
        this.clientId = clientId;
        this.companyId = companyId;
        this.userIp = userIp;
        this.requestId = requestId;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getClientId() {
        return clientId;
    }

    public void setClientId(String clientId) {
        this.clientId = clientId;
    }

    public Integer getCompanyId() {
        return companyId;
    }

    public void setCompanyId(Integer companyId) {
        this.companyId = companyId;
    }

    public String getUserIp() {
        return userIp;
    }

    public void setUserIp(String userIp) {
        this.userIp = userIp;
    }

    public String getRequestId() {
        return requestId;
    }

    public void setRequestId(String requestId) {
        this.requestId = requestId;
    }

    @Override
    public String toString() {
        return "{\"uid\":\"" + userId + "\",\"clid\":\"" + clientId + "\",\"cid\":" + companyId + ",\"uip\":\"" + userIp
                + "\",\"rid\":\"" + requestId + "\"}";
    }
}

   

 

public class ResponseModel implements Serializable {
	/**
	 * 
	 */
    private static final long serialVersionUID = 1L;
	@JSONField(name = "ers")
	private List<ErrorInfo> errors;
	@JSONField(name = "err")
	private ErrorInfo errorInfo;
	@JSONField(name = "data")
	private Object data;

	public ErrorInfo getErrorInfo() {
		return errorInfo;
	}

	public void setErrorInfo(ErrorInfo errorInfo) {
		this.errorInfo = errorInfo;
	}
	public Object getData() {
		return data;
	}

	public void setData(Object data) {
		this.data = data;
	}

	public List<ErrorInfo> getErrors() {
		return errors;
	}

	public void setErrors(List<ErrorInfo> errors) {
		this.errors = errors;
	}

	public ResponseModel() {
	}

	public ResponseModel(List<ErrorInfo> errors, Object object) {
		this.errors = errors;
		this.data = object;
	}

	public ResponseModel(ErrorInfo error, Object object) {
		this.errorInfo=error;
		this.data = object;
	}

 3.logic里面的工具entity-----类似于map(不过里面只有一组值)

  

public class Tuple implements Serializable {
	private static final long serialVersionUID = -8719929625763890308L;

	public static <A, B> Tuple2<A, B> tuple(A item1, B item2) {
		return new Tuple2<A, B>(item1, item2);
	}

	public static <A, B, C> Tuple3<A, B, C> tuple(A item1, B item2,
			C item3) {
		return new Tuple3<A, B, C>(item1, item2, item3);
	}

	public static final class Tuple2<A, B> extends Tuple implements
			Serializable {

		/**
		 * gen by eclipse
		 */
		private static final long serialVersionUID = 7263645006696591635L;
		private A item1;
		private B item2;

		public Tuple2() {
			
		}
		
		public Tuple2(A item1, B item2) {
			this.item1 = item1;
			this.item2 = item2;
		}

		public A getItem1() {
			return item1;
		}

		public void setItem1(A item1) {
			this.item1 = item1;
		}

		public B getItem2() {
			return item2;
		}

		public void setItem2(B item2) {
			this.item2 = item2;
		}
	}

	public static final class Tuple3<A, B, C> extends Tuple implements
			Serializable {

		/**
		 * gen by eclipse
		 */
		private static final long serialVersionUID = 482545776907024160L;

		private A item1;
		private B item2;
		private C item3;
		
		public Tuple3(A item1, B item2, C item3) {
			this.item1 = item1;
			this.item2 = item2;
			this.item3 = item3;
		}
		
		public A getItem1() {
			return item1;
		}

		public void setItem1(A item1) {
			this.item1 = item1;
		}

		public B getItem2() {
			return item2;
		}

		public void setItem2(B item2) {
			this.item2 = item2;
		}

		public C getItem3() {
			return item3;
		}

		public void setItem3(C item3) {
			this.item3 = item3;
		}
	}
	
	public static final class Tuple4<A, B, C, D> extends Tuple implements
			Serializable {

		/**
		 * gen by eclipse
		 */
		private static final long serialVersionUID = 482545776907024160L;

		private A item1;
		private B item2;
		private C item3;
		private D item4;

		public Tuple4(A item1, B item2, C item3, D item4) {
			this.item1 = item1;
			this.item2 = item2;
			this.item3 = item3;
			this.item4 = item4;
		}

		public A getItem1() {
			return item1;
		}

		public void setItem1(A item1) {
			this.item1 = item1;
		}

		public B getItem2() {
			return item2;
		}

		public void setItem2(B item2) {
			this.item2 = item2;
		}

		public C getItem3() {
			return item3;
		}

		public void setItem3(C item3) {
			this.item3 = item3;
		}
		
		public D getItem4() {
			return item4;
		}

		public void setItem4(D item4) {
			this.item4 = item4;
		}
	}
}

 备注:实体类就是有set和get方法的简单JAVA对象,定义的时候一定要记住要序列化哦!!!

分享到:
评论

相关推荐

    一种开放式中文命名实体识别的新方法

    命名实体识别(Named Entity Recognition, NER)是自然语言处理领域的一项关键技术,它能够帮助计算机从文本中提取出具有特定意义的信息单元,如人名、地名、组织机构名等。随着互联网数据的爆炸式增长,如何有效地...

    OpenCPN探索 -- 空间对象构建

    空间对象是指包含真实世界实体位置相关信息的对象。在S57标准中,它们与特征对象一起构成对现实实体的描述。空间对象不能独立存在,必须依赖于一个特征对象。 ##### 2.2 模型描述 S57标准仅定义了向量模型这一种...

    Weibo NER标签含义1

    在自然语言处理(NLP)领域,命名实体识别(NER)是一项至关重要的基础任务,其目的是从文本中识别出具有特定意义的实体,比如人名、地名、组织名等。对于中文社交媒体文本的NER任务,由于中文语言特有的特点和社交...

    融合预训练模型文本特征的短文本分类方法.docx

    借助有效的预训练任务和注意力机制,预训练模型可以更好地理解语句的真正含义,在自然语言处理的各项任务中取得了领先的精度。预训练模型利用上下文信息,解决了传统词向量表示不能一词多义的问题。 段丹丹等[5]...

    地籍拓扑关系

    然而,现有的拓扑关系模型在处理地籍实体间复杂的空间关系时暴露出了一些根本性缺陷,这促使研究者们探索新的计算方法。 ### 拓扑关系的重要性 地籍信息系统(CIS)中,地籍实体(如地块、建筑物、道路等)之间的...

    生活中的数字.doc

    通过这种方式,孩子们可以从抽象的概念中跳脱出来,开始在真实世界中找到数字的具体存在。此外,教师还会准备各种学习资料,如数字的照片、记录纸,甚至提供剪刀和双面胶等工具,让孩子们能够亲手操作,以此来锻炼...

    ICLR 2019 笔记.pdf

    面向对象的表示学习是一种将环境中实体(如物体)识别为独立实体的方法,这种方法可以帮助智能体更好地理解和交互复杂的环境。Tejas Kulkarni分享了面向对象表示在强化学习中的应用案例。 #### 2.6 学习表示和规划...

    北票事业编招聘2020年考试真题及答案解析完整版.docx

    - **语义理解**:理解文本的真实含义,而不仅仅是表面文字。例如,第六题要求理解“在所有的时刻欺骗所有的人”这一说法的逻辑。 ### 3. 机器学习与数据分析 在处理大量文本数据时,机器学习算法可以帮助我们自动...

    初学者需要掌握的数据库设计词汇对照表.txt(数据库的一些专用词汇都在这,我在网上总结了好久才出来

    泛化是实体关系建模中的概念,用于表示一个实体类是另一个实体类的特例。泛化关系帮助简化模型,减少重复。 ### 61. Generalization Hierarchy 泛化层次是实体类之间的分层结构,显示了实体类之间的继承关系。在...

    2018中考物理试题分类汇编专题29磁体与磁场含解析20180809191

    但同时,也需要向学生强调这些模型仅是概念上的表示,并非真实存在。 综上所述,磁体与磁场作为中考物理试题的一部分,需要学生不仅了解各个知识点,还需要能够将这些知识点与实际现象相结合,通过实验来验证理论,...

    学校图书馆学习利用报告.ppt

    在学校学习生活中,图书馆作为知识的殿堂,起着不可替代的作用。它不仅是海量文献资料的集散...通过不断探索和实践,我们有信心能够将学校图书馆打造成为真正意义上的知识宝库,为学生的学习和成长提供更加坚实的支撑。

    博物馆展示中虚拟现实技术的运用分析.pdf

    在传统的博物馆展示中,实体展品虽直观真实,但在内容连贯性、展览空间、展示形式和时间安排上存在局限。传统博物馆的展品展示往往基于特定的分类原则,这限制了观众自由探索和比较的空间;有限的展厅面积意味着许多...

    官渡2016年事业编招聘考试真题及答案解析完整版.docx

    1. 人类知识的发展:这段话强调了人类知识的积累是一个不断扩展和深化的过程,意味着我们需要不断学习和探索未知。这提示我们在备考过程中,应保持求知的热情和对新知识的追求。 2. 心理状态与对待西方的态度:这里...

    信息时代高校历史档案数字化程式探析——以北京大学档案馆为例.pdf

    由于历史档案年代久远,加之纸张材料的自然老化、存储条件限制等因素,原始档案存在字迹模糊、纸张损坏等问题。数字化的过程涉及扫描、修复等技术手段,不仅能够实现档案原件的保护,还能延长档案的物理寿命。此外,...

    管理信息系统第四版答案.pdf

    MIS的核心价值在于将原始数据转换为有意义的信息,为企业提供决策支持,优化其运营效率。在对《管理信息系统第四版答案.pdf》的内容进行解析时,我们可以从信息的定义与特性、信息流的作用、决策问题的分类、信息...

    项目八 认识自然语言处理-任务1掌握自然语言处理的基本概念.pptx

    5. **语用分析**:考虑上下文和社会文化背景,以更准确地理解文本的真实意图和隐含意义。 #### 五、自然语言处理的应用场景 1. **机器翻译**:自动将一种语言翻译成另一种语言。 2. **文本摘要**:从大量文本中...

    文学概论复习要点.doc

    在第二章“文学文本与文体种类”中,文学文本是文学存在的实体,包括语言层、现象层和意蕴层三个层次。诗歌作为一种特殊的文学形式,以其抒情性、想象性和独特的语言结构及意象著称。诗歌的意象和意境是诗人情感与...

Global site tag (gtag.js) - Google Analytics