Hibernate有很多值得学习的地方,这里我们主要介绍Hibernate基础知识,包括介绍主键Id得到一个持久对象,Hibernate中有两个方法等方面。
今天重新学习Hibernate,虽然一年多以前跟老师学过Hibernate基础知识,但现在重新学习还是有很多收获的,发现自己的知识知道的都是些皮毛,用了很久的东西,知道怎么操作怎么用,但要说说它的所以然,摇摇头,呵呵
Hibernate是JDBC的升级版,专用连接数据库。
Hibernate比JDBC简单使用,不需要输入很多的连接数据库代码。提取数据库数据也不用循环提取。使用时的方法为:
1.新建一个Java普通项目
2.创建user library 加入三个地方的jar包:两个Hibernate 一个MYSQL驱动
3.创建Hibernate配置文件,Hibernate.cfg.xml
4.建立实体类user
5.在Hibernate文件中寻找eg至底部找出user.hbm.xml映射文件,copy到映射文件所在文件中
6.将映射文件user.hbm.xml部分加入到Hibernate.cfg.xml中
7.创建数据库,再利用Hibernate将实体映射导入到数据库中
根据主键Id得到一个持久对象,Hibernate中有两个方法,一个get,一个load,他们两个参数相同,都返回一个Object
它们的区别:执行get方法即时生成查询sql去查询数据库得到相应的pojo,如果数据库中没有相应记录,则返回null执行load方法不会即时产生 sql语句,而是在用到返回的对象时采取查询数据库,也就是load方法有默认的延迟加载,在执行load方法后返回的不是一个pojo对象,是pojo 对象的一个代理(据说Hibernate是用代理的方式实现延迟加载的,这块还迷糊),如果数据库中没有相应记录,load方法会抛出异常ObjectNotFoundException看了一下我们用MyEclipse Hibernate工具通过数据库生成的DAO类,它的findById方法是用的session.get()方法,这是即时获得pojo对象,如果是load方法,在执行完load后如果关闭了session,那在接下来用到这个pojo对象时恐怕会报session已关闭的错误。
还有就是这两个方法的第二个参数id,它必须是实现了java.io.Serializable接口,也就是可序列化的。以上介绍Hibernate基础知识。
【编辑推荐】