Java实体类(entity)作⽤说明
对java实体类的众多理解:
A .就是属性类,通常定义在model层⾥⾯
B. ⼀般的实体类对应⼀个数据表,其中的属性对应数据表中的字段。
好处:
1.对对象实体的封装,体现OO思想。
2.属性可以对字段定义和状态进⾏判断和过滤
3.把相关信息⽤⼀个实体类封装后,我们在程序中可以把实体类作为参数传递,更加⽅便。
C. 说⽩了就是为了让程序员在对数据库操作的时候不⽤写SQL语句
D. 就是⼀个数据库表⽣成⼀个类
这样做对数据库操作起来⽅便
编写代码较少提⾼效率可以使程序员专注逻辑关系
E. 实体类就是把对某⼀个表的操作全写在⼀个类中.
F. 在Java开发中经常要定义⼀些实体类,这些类的定义的好坏会直接影响,编写代码的质量和难易程度,以下是别⼈总结的⼀些经验。
⼀、实体类的名字尽量和数据库的表的名字对应相同。
⼆、实体类应该实现java.io.Serializable接⼝。
三、实体类应该有个⽆参的构造⽅法。
四、实体类应该有个有参(所有的参数)的构造⽅法。
五、实体类有属性和⽅法,属性对应数据库中表的字段,主要有getter和setter⽅法。
六、实体类还应该有个属性serialVersionUID。例如:private static final long serialVersionUID = -6125297654796395674L;
七、属性⼀般是private类型,⽅法位public类型,对于数据库⾃动⽣成的ID字段对应的属性的set⽅法
应为private。
G. 实体类中都是实例对象,实例对象在jvm的堆区中开辟了⼀个该对象引⽤空间,并且让该引⽤指向某个实例,类声明只是在jvm 的栈去中开辟了⼀个该对象引⽤,没有让该引⽤做任何指向.
例如 :
1.String str;
2.String str = new String ("dgfgg");
1中的只是⼀个引⽤,说明str应该指向⼀个String 类型的实例,但还没对str和堆区的实例做具体的指向.也就是说它还没有指向某个实例.
⽽2中的即定义了⼀个引⽤(str)⼜对str做了具体的指向,它指向的内容就是后⾯new出来的String 实例.
实体类中的构造⽅法+set⽅法+get⽅法:
构造函数:初始化成员变量
get,set⽅法,获取和改变成员变量的值,JavaBean规范规定只使⽤get/set访问成员变量
构造函数:你每次写⼀个Java⽂件,实际上都写了⼀个类(创建⼀个类,jvm就会⾃动为这个类开辟⼀块内存空间)。有了类就需要有类对象,要产⽣类对象就需要构造函数对这个刚刚申请的内存空间做⼀点事,赋属性值之类的⼯作。当然,如果你不写,它就默认有⼀个Class(){}的构造⽅法出现,当然它什么活也不⼲。
你的属性是什么样的?public?private?默认?还是protected?这四种你教材务必弄懂分清,很有⽤。如果是private,这种属
性不许别的对象改和读,但有时候需要改/读,怎么办?写⼀个public void setAbc(xxx){}和⼀个public xxx getAbc(){}就实现外部读写属性的功能了。
set ,get完全是⾃我规定的,就是设置初值和获得值的意思.你也可以修改成其他字符.但是⽤set ,get还是要好些,因为你能通过单词理解你写的代码的意思,⽅便阅读⽽已。
总结:实体是就是Java中的O/R Mapping映射,即数据库中的⼀个表映射成对应的⼀个Java类,其中还有⼀个映射⽂件。给定⼀个较复杂的实体关系(如⼀对⼀,⼀对多,多对多),应该熟练地写出实体类!!
java 实体类其实就是俗称的POJO,这种类⼀般不实现特殊框架下的接⼝,在程序中仅作为数据容器⽤来持久化存储数据⽤的。
POJO(PlainOldJavaObjects)简单的Java对象
它的⼀般格式就是
publicclassA{
privateStringid;
publicStringgetId{
returnthis.id;
}
publicvoidsetId(Stringid){
this.id=id;
}
}
sql语句实现的四种功能其实这样写的意义就在于封装,id作为类A的成员变量,也称属性,⼀般情况下拥有读和写的能⼒,我们将id设为private,则外部⽆法对其直接进⾏操作,同时通过set⽅法提供了外部更改其value的⽅法,⼜通过get⽅法使外界能读取该成员变量的值。
序列化的必要性
Java中,⼀切都是对象,在分布式环境中经常需要将Object从这⼀端⽹络或设备传递到另⼀端。这就需要有⼀种可以在两端传输数据的协议。Java序列化机制就是为了解决这个问题⽽产⽣。
Java对象序列化不仅保留⼀个对象的数据,⽽且递归保存对象引⽤的每个对象的数据。
Java串⾏化技术可以使你将⼀个对象的状态写⼊⼀个Byte流⾥,并且可以从其它地⽅把该Byte流⾥的数据读出来,重新构造⼀个相同的对象。这种机制允许你将对象通过⽹络进⾏传播,并可以随时把对象持久化到数据库、⽂件等系统⾥。Java的串⾏化机制是RMI、EJB等技术的技术基础。⽤途:利⽤对象的串⾏化实现保存应⽤程序的当前⼯作状态,下次再启动的时候将⾃动地恢复到上次执⾏的状态。
序列化就是⼀种⽤来处理对象流的机制,所谓对象流也就是将对象的内容进⾏流化。可以对流化后的对象进⾏读写操作,也可将流化后的对象传输于⽹络之间。序列化是为了解决在对对象流进⾏读写操作时所引发的问题。
对于⼀个存在于Java虚拟机中的对象来说,其内部的状态只保持在内存中。JVM停⽌之后,这些状态就丢失了。在很多情况下,对象的内部状态是需要被持久化下来的。提到持久化,最直接的做法是保存到⽂件系统或是数据库之中。这种做法⼀般涉及到⾃定义存储格式以及繁琐的数据转换。
对象关系映射(Object-relationalmapping)是⼀种典型的⽤关系数据库来持久化对象的⽅式,也存在很多直接存储对象的对象数据库。对象序列化机制(objectserialization)是Java语⾔内建的⼀种对象持久化⽅式,可以很容易的在JVM中的活动对象和字节数组(流)之间进⾏转换。除了可以很简单的实现持久化之外,序列化机制的另外⼀个重要⽤途是在远程⽅法调⽤中,⽤来对开发⼈员屏蔽底层实现细节。
补充知识:java 万能类型转化
是什么:
java 万能类型转化⼯具类,提供Short、Integer、Long、short、int、long 和 String之间的互转,且⽀持当对象为空时,进⾏对象的创建。
怎么做:
见代码:
/**
* 如果对象为空,则创建,⽀持类型装换
*
* 只⽀持 Long Integer Short 和 String 之间的互转
* @param obj Object
* @param clazz Class<T>
* @param <T> T
* @return <T>
*/
public static <T> T ifNullCreate(Object obj,Class<T> clazz){
T result = null;
if(obj == null){
try {
result = wInstance();
} catch (Exception e) {
e.printStackTrace();
}
}else {
if(clazz.isInstance(obj)){
result = (T)obj ;
}else if (clazz.equals(Long.class) && Class().equals(String.class)){
Object o = Long.parseLong((String)obj) ;
result = (T)o;
}else if (clazz.equals(Integer.class) && Class().equals(String.class)){
Object o = Integer.parseInt((String)obj) ;
result = (T)o;
}else if (clazz.equals(Short.class) && Class().equals(String.class)){
Object o = Short.parseShort((String)obj) ;
result = (T)o;
}else if (clazz.equals(String.class) && (
|| Class().equals(long.class)
|| Class().equals(int.class)
|| Class().equals(Integer.class)
|| Class().equals(short.class)
|| Class().equals(Short.class) )){
Object o = String.valueOf(obj) ;
result = (T)o;
}
}
return result;
}
为什么?
⽇常开发中,含有⼤量的类型转化和空值处理,提供⼀个万能接⼝很必要……
以上这篇Java实体类(entity)作⽤说明就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论