下了个Hibernate视频教程听虽然一年多以前跟老师学过Hibernate但现在听听还是有很多收获的发现自己的知识知道的都是些皮毛用了很久的东西知道怎么操作怎么用但要说说它的所以然摇摇头呵呵
根据主键Id得到一个持久对象Hibernate中有两个方法一个get一个load他们两个参数相同都返回一个Object
它们的区别执行get方法即时生成查询sql去查询数据库得到相应的pojo如果数据库中没有相应记录则返回null执行load方法不会即时产生sql语句而是在用到返回的对象时采取查询数据库也就是load方法有默认的延迟加载在执行load方法后返回的不是一个pojo对象是pojo对象的一个代理(据说Hibernate是用代理的方式实现延迟加载的这块还迷糊)如果数据库中没有相应记录load方法会抛出异常ObjectNotFoundException看了一下我们用MyEclipse hibernate工具通过数据库生成的DAO类它的findById方法是用的sessionget()方法这是即时获得pojo对象如果是load方法在执行完load后如果关闭了session那在接下来用到这个pojo对象时恐怕会报session已关闭的错误
还有就是这两个方法的第二个参数id它必须是实现了javaioSerializable接口也就是可序列化的