MyException - 我的异常网
当前位置:我的异常网» 软件架构设计 » 探索实体类存在的真个意义

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

www.MyException.Cn  网友分享于:2015-01-08  浏览:0次
探索实体类存在的真正意义

一. 实体类简述  

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

文章评论

程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
如何成为一名黑客
如何成为一名黑客
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
编程语言是女人
编程语言是女人
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
程序员都该阅读的书
程序员都该阅读的书
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
旅行,写作,编程
旅行,写作,编程
中美印日四国程序员比较
中美印日四国程序员比较
Java程序员必看电影
Java程序员必看电影
为什么程序员都是夜猫子
为什么程序员都是夜猫子
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
程序员应该关注的一些事儿
程序员应该关注的一些事儿
 程序员的样子
程序员的样子
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
我是如何打败拖延症的
我是如何打败拖延症的
总结2014中国互联网十大段子
总结2014中国互联网十大段子
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
程序员必看的十大电影
程序员必看的十大电影
10个调试和排错的小建议
10个调试和排错的小建议
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
代码女神横空出世
代码女神横空出世
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
那些争议最大的编程观点
那些争议最大的编程观点
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
一个程序员的时间管理
一个程序员的时间管理
漫画:程序员的工作
漫画:程序员的工作
老程序员的下场
老程序员的下场
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
鲜为人知的编程真相
鲜为人知的编程真相
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
每天工作4小时的程序员
每天工作4小时的程序员
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有