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

一. 实体类简述  

 实体类其实就是俗称的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对象,定义的时候一定要记住要序列化哦!!!

你可能感兴趣的:(POJO)