前言
今天在学习的时候突发奇想,想问问自己pojo和Javabean有什么区别,上网搜了搜,好多人都是千篇一律的回答,不能说看不懂吧,但是也不能说完全明白,去百度百科查了一下,好像大致了解了,来这里记录一下,顺便也希望大家检查一下我说的是否有误,毕竟小白一个。
正文开始
什么是Javabean?
Javabean就是java标准类:
1:private修饰成员属性;
2:所有成员变量的getter和setter方法;
3:无参构造方法;
4:实现序列化serializable接口;
这就是基本的javabean所具备的属性,但是并不是说Javabean只有这些东西,你可以自己再添加想要实现的方法,比如:public void show(){System.out.println(“这是一个show方法”)},
什么是pojo?
pojo就是"Plain Ordinary Java Object",简单普通的java对象,他具备的条件(来自百度百科):
1:private修饰成员属性;
2:所有成员变量的getter和setter方法;
这就是基本的pojo所具备的属性,当然他也是可以实现自定义方法的,但是有些限制,后面说明。
区别?
其实可以发现,似乎pojo和Javabean就差了一个实现序列化接口(当类中没有构造函数时,系统会默认赠送一个无参构造函数)。但是这就是重点;pojo是一个很独立的类,
(1).不继承任何类
(2).不实现任何接口
(3).不包含注解(这个是我个人理解,原图放在下面)
ps:所以才会说pojo是一个不受任何限制的类。
(4).不包含业务逻辑或持久逻辑(重点)
解释
(1)和(2)很好理解,就是字面意思,不继承类,不实现接口,至于(3)我也不是很明白是不是不用注解。至于第(4)应该是很多人不明白的了,其它博文里都是这么说的“不能携带有connection之类的方法,即不包含业务逻辑或持久逻辑等。”其实就是说数据库持久层干的事,你不能干,比如说获取数据库链接connection,再比如说你实现查询数据库的操作,或者插入数据到数据库,这些都是禁止的。
因为总的来说pojo是用来封装数据库对象的,主要是为了存储数据,你不能干你不该做的事。有人就想你刚才不说他是没有限制的吗,那我们国家也是自由的啊,但是也不是你想干什么就干什么吧,得有个底线约束着你,而不包含业务逻辑或持久逻辑就是他的约束。上面我也说了,他可以有自定义的方法,但是这其实最好没有,可以让他尽量纯粹,他就是用来封装数据的,但是你要明白他不是只能封装数据,我们是遵照着某些标准,让他这样。
以上这些都是本人的理解,不敢说是官方正解,如有错误,还希望大家指出来,谢谢。
最后奉上百科的一张图: