之前学习总是囫囵吞枣,总是没有把不懂的东西搞懂的精神,导致很多很简单的概念,我都一直没搞懂。今天要一次性把 Bean,POJO和Dao这三个困扰我多年的概念搞懂来。
首先来说Java Bean,它其实是一套编码规范,所谓的编码规范,就类似于你告诉我这是个Java Bean,那我一定知道这个class有哪些特点,我可以用Java Bean规范里的操作来使用这个class,比如Java Bean肯定有一个无参的构造方法,我可以直接 BeanSample sample = new BeanSample()
,关于Java Bean的起源,可以参考这两篇文章《Java 帝国之Java bean (上)》和《Java 帝国之Java bean (下)》。
在这个知乎问题【Java Bean是个什么概念】下的一个回答意简言赅:
- 所有属性为private
- 提供默认构造方法
- 提供getter和setter
- 实现serializable接口
虽然规范里有更多繁复的规定,但是平常大家称谓的Java Bean,只需要符合上述四个条件就可以了。
按照约定实现的Java类,即Java Bean,在一些场景下就变得很方便了,比如使用Java反射机制的时候,就可以很方便利用getter和setter方法了,Java跨机器间通讯的时候,也可以利用Java Bean可序列化的特点,轻松传输Java对象了。
关于POJO,则是说好众多,毕竟最初的定义感觉也不是很规范,就是个Java专家在个会议上提出的,比较好的几个关于POJO的文章,可参考Difference between DTO, VO, POJO, JavaBeans?, 和维基百科上的 Plain Old Java Object
基本上符合下面三无条件的,都可以称之为POJO:
- 不继承任何类
- 不继承实现任何接口
- 没有包含注解
另外,似乎POJO也不应该包含业务逻辑。
关于Java DAO (DataAccessobjects 数据存取对象)是指位于业务逻辑和持久化数据之间实现对持久化数据的访问。通俗来讲,就是将数据库操作都封装起来。我觉得参考这篇文章即可:《Java DAO 模式》。
实际上DAO就是封装了对数据库访问的类,但是DAO不是单独存在的,而是用DAO模式,目前看到的DAO模式有两个版本,版本一:
1、DAO接口: 把对数据库的所有操作定义成抽象方法,可以提供多种实现。
2、DAO 实现类:针对不同数据库给出DAO接口定义方法的具体实现。
3、实体类:用于存放与传输对象数据,比如表示查询到的所有字段存放的的对象
4、数据库连接和关闭工具类:避免了数据库连接和关闭代码的重复使用,方便修改。
版本二会增加一个 DAO 工厂类,可以更方便使用DAO的实现类
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。