javamodel类_java实体类entity,model模型,javabean的理解
以。。。
⼀、java实体类entity
实体类场景:⽐如mvc设计中model层定义java实体
对java实体类的众多理解:
A. 通常定义在model层⾥⾯
B. ⼀般的实体类对应⼀个数据表,其中的属性对应数据表中的字段。
好处:
1、对象实体(其实是数据表)的封装,体现OO思想。
2、属性可以对字段定义和状态进⾏判断和过滤
3、把相关信息⽤⼀个实体类封装后,我们在程序中可以把实体类作为参数传递,更加⽅便。
C. 说⽩了就是为了让程序员在对数据库操作的时候不⽤写SQL语句
D. 就是⼀个数据库表⽣成⼀个类
E. 实体类就是把对某⼀个表的操作全写在⼀个类中.
F. 在Java开发中经常要定义⼀些实体类,这些类的定义的好坏会直接影响,编写代码的质量和难易程度,以下是别⼈总结的⼀些经验。
1、实体类的名字尽量和数据库的表的名字对应相同。
2、实体类应该实现java.io.Serializable接⼝。
3、实体类应该有个⽆参的构造⽅法。
4、实体类应该有个有参(所有的参数)的构造⽅法。
5、实体类有属性和⽅法,属性对应数据库中表的字段,主要有getter和setter⽅法。
6、实体类还应该有个属性serialVersionUID。例如:private static final long serialVersionUID = -6125297654796395674L;
7、属性⼀般是private类型,⽅法为public类型,对于数据库⾃动⽣成的ID字段对应的属性的set⽅法应为private。
java接口有没有构造方法
G. 实体类中都是实例对象,实例对象在jvm的堆区中开辟了⼀个该对象引⽤空间,并且让该引⽤指向某个实例,类声明只是在jvm的栈去中开辟了⼀个该对象引⽤,没有让该引⽤做任何指向.
例如 :
1.String str;
2.String str = new String ("dgfgg");
1中的只是⼀个引⽤,说明str应该指向⼀个String 类型的实例,但还没对str和堆区的实例做具体的指向.也就是说它还没有指向某个实例.
⽽2中的即定义了⼀个引⽤(str)⼜对str做了具体的指向,它指向的内容就是后⾯new出来的String 实例.
H. 实体类中的⽅法包括:构造⽅法 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还是要好些,因为你能通过单词理解你写的代码的意思,⽅便阅读⽽已。
⼆、javabean
为什么叫bean?没特别原因,就是随意定义的
当初在开发JAVA语⾔的时候,就是不知道该取什么名字。
后来,在程序员中,他们经常喝⼀种咖啡, 叫“⽖洼”(⾳译),就取名为JAVA。
这种咖啡,是⽤“⽖洼⾖”磨出来的。所以,他们给⽤“⾖”来命名。就是BEAN。
如果你问java程序员到底什么是bean,很多⼈都会回答,javabean实际上就是⼀个实体类,只不过javabean是⼀种规范。
三、java中mvc模式中model与entity(实体类)的区别
model的字段>entity的字段,并且model的字段属性可以与entity不⼀致,model是⽤于前端页⾯数据展⽰的,⽽entity则是与数据库进⾏交互做存储⽤途。
举个例⼦:
⽐如在存储时间的类型时,数据库中存的是datetime类型,entity获取时的类型是Date()类型,date型的数据在前端展⽰的时候必须进⾏类型转换(转为String类型),在前端的进⾏类型转换则⼗分的⿇烦,转换成功了代码也显得⼗分的臃肿,
所以将entity类型转换后,存储到对应的model中,在后台做类型转换,然后将model传到前端显⽰时,前端的就⼗分的⼲净。同时也可以添加字段,作为数据中转。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。