- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
hibernate是什么?
hibernate是基于ORM对象关系映射(完成对象数据到关系数据映射的机制)实现的,做数据持久化的工具
HttpSession与Hibernate中Session的区别
1. javax.servlet.http.HttpSession是一个抽象接口
用途:存放这个用户的一些经常被用到的信息,例如:用户名,权限等
2. 它是hibernate操作数据库的一个句柄对象 手动或者通过业务层获取
0. Hibernate介绍Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
1.Hibernate有哪几种查询数据的方式
(1)导航对象图查询(2)OID查询(3)HQL (4)QBC (5)本地SQL
2.load()和get()的区别
load加载方法:
Users user = (Users)session.load(Users.class, userId);
get加载方法:
Users user = (Users)session.get(Users.class, userId);
两加载方法区别:
区别1:如果数据库中,没有userId的对象。如果通过get方法加载,则返回的是一个null;如果通过load加载,则返回一个代理对象,如果后面代码如果调用user对象的某个属性(比如user.getPassword())会抛出异常:org.hibernate.ObjectNotFoundException;
区别2:load支持延迟加载,get不支持延迟加载。
也就是说:Users user = (Users)session.load(Users.class, userId);
这句代码不会去执行数据库查询,只有用到user时才会去执行数据库查询。
而:Users user = (Users)session.get(Users.class, userId);
则立即去执行数据库查询。 所以Users user = (Users)session.load(Users.class, userId);不会执行任何sql。
注意:
Users user = (Users)session.load(Users.class, userId);
System.out.println(user.getId());
上面这2句代码,不会去执行数据库操作。因为load后会在hibernate的一级缓存里存放一个map对象,该map的key就是userId的值,但是当你getId()时,它会去一级缓存里拿map的key值,而不去执行数据库查询。所以不会报任何错。不会执行任何数据库操作。
2.1请解释Session的load方法和get方法的不同;以及Query的list和iterator方法的不同
load():现在session缓存中寻找,如果找到了返回该对象,如果没找到,程序会新建一个对象,并且返回,存在session中,不会在数据库中查找,在程序中如果没有用到这个实体类,可以节省一次数据库连接。如果在程序中用到了这个实体类,这个实体类就会在数据库去查找,如果没有查找到就会抛异常。(延时加载)
get():在缓存在查找,如果找到该对象,返回该对象。如果没找到,会到数据库中查找,如果数据库中有则返回该对象,如果没找到这返回空。(立即加载)
3. Hibernate工作原理及为什么要用?
原理:
1. 读取并解析配置文件
2. 读取并解析映射信息,创建SessionFactory
3. 打开Sesssion
4. 创建事务Transation
5. 持久化操作
6. 提交事务
7. 关闭Session
8. 关闭SesstionFactory
为什么要用:
1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作
3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。
4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。
4. Hibernate是如何延迟加载?
1. Hibernate2延迟加载实现
您可能关注的文档
- 石大远程在线考试--《钻井工程》_63781426730389396案例.docx
- 石化工艺名词案例.doc
- 石化园区高清视频数字监控系统建设方案案例.doc
- 石灰石膏法脱硫运行规程案例.doc
- 石油大学2015《计算机文化基础》期末复习题案例.doc
- 时代2014年中考模拟英语(含)案例.doc
- 管理者的角色定位及认知探讨.pptx
- 博州本地传输网规划(集客、家客)-20141219探讨.pptx
- 部编本《综合性学习——有朋自远方来》探讨.pptx
- 2016年中考政治热点专题感动中国人物程序.doc
- GPS电子锁物流管理方案.pdf
- 2025年河南省漯河市郾城区高三下学期3月联考数学试卷.docx
- 2025年上海市金山区高三二模英语试卷(含答案).docx
- 2025年高考时事政治时事政治考试题库带解析附答案(典型题).docx
- 2025年河南省洛阳市老城区高三下学期数学基础题、中档题型强化训练.docx
- 汽车使用与维护 课件 项目四 冷却系统的维护.ppt
- 2025至2031年中国超细颗粒硬质合金外R铣刀行业投资前景及策略咨询研究报告.docx
- GPS设备行业相关投资计划提议.pdf
- 2025年河南省洛阳市老城区高三下学期数学基础题、中档题型强化训练.docx
- 2025至2031年中国超薄型PET双面胶带行业投资前景及策略咨询研究报告.docx
文档评论(0)