为帮助你理解,打个比喻:你在火车站要把行李寄存,行李就相当于aPerson,你把行李给寄存处寄存,相当OO持久化保存到数据库;你从寄存处拿出行李,相当于findbyid从数据库获得对象。
这样,你思考几个问题:在这个过程中:寄存处的职责是什么?完整拷贝不走样的保存你的行李,然后再归还你的行李,至于你拿了行李后,还和寄存处有任何关系吗?或者你想让寄存处多做一些应该你做的事情,比如打开行李拿出一些东西再打成包(类似与使用SQL语句完成很多业务功能),可以吗?
为什么要寄存,也就是为什么要持久化?那是因为计算机要掉电,掉电后,内存中对象信息就没有了,所以需要抗掉电。
再打个比喻:企业系统其实和桌面系统很类似,桌面系统中我们编辑文本,为防止文字丢失,经常要save一下,同样,企业系统中,为防止业务对象丢失,就需要save一下,至于如何save,save的格式则不是我们业务程序员关心的了。
在桌面系统中,如果操作系统给你保存在文件也可以,保存成数据库也可以,保存成word文档或Excel都可以,你无需关心save这个具体过程。同样,在企业系统中,关系数据库也只是对象保存的一个媒介,可以以XML保存在硬盘上,都可以,Hibernate就是一个使用关系数据库保存对象的软件,就象桌面系统中notepad是用txt保存你的文字业务对象,word软件是用doc格式保存你的文字业务对象一样。
我们为什么对数据库容易接受,准确理解,而却无法理解OO是什么,都是和我们教育背景有关,所以,使用Hibernate实际上是一个重新学习软件的过程。不要着急。慢慢来,先准确理解OO,如从Evans DDD开始学习业务对象,而不是业务数据表。