传智JavaEE Hibernate教程:姜涛Day36-37笔记
"传智168期JavaEE课程关于Hibernate框架的笔记,涵盖了day36至day37的内容,由讲师姜涛讲解,由阿滔整理。笔记主要介绍了Hibernate的各种检索方式,包括导航对象图检索、OID检索、HQL检索、QBC检索以及本地SQL检索。同时,还提供了一个初始化数据的测试示例。" 在JavaEE开发中,Hibernate是一个非常重要的持久化框架,它简化了与数据库的交互,使开发者能够使用面向对象的方式来操作数据库。在传智168期的JavaEE Hibernate课程中,姜涛老师讲解了Hibernate的多种检索方式,这对于理解和运用Hibernate进行数据查询至关重要。 1. **导航对象图检索**: 这种方式是通过已加载的对象来获取与其关联的对象。例如,如果我们已经加载了一个`Customer`对象,可以通过`customer.getOrders()`来获取该客户的所有订单。这种方式充分利用了对象关系映射,无需编写SQL查询。 2. **OID检索**: OID(Object Identifier)是对象的唯一标识符。`get()`和`load()`方法是用于根据对象的OID来检索对象。`get()`方法会在数据库中检查是否存在该OID,而`load()`方法则假设对象存在并返回一个代理对象,实际查询在需要时才执行。 3. **HQL检索**: HQL(Hibernate Query Language)是Hibernate提供的面向对象的查询语言,类似于SQL但更关注对象。通过`createQuery()`方法创建`Query`对象,并传入HQL语句,可以执行复杂的查询操作。 4. **QBC检索**: QBC(Query By Criteria)提供了一种基于对象的查询接口,可以避免直接编写字符串形式的查询语句。使用`createCriteria()`方法创建`Criteria`对象,然后添加各种限制条件,如属性比较、排序等,实现灵活的查询。 5. **本地SQL检索**: 当需要使用特定于数据库的SQL特性或者HQL无法满足需求时,可以使用`createSQLQuery()`方法创建`SQLQuery`对象,直接执行数据库的SQL查询语句。这种方式虽然更接近底层数据库操作,但可能导致移植性问题。 在课程的示例中,展示了如何使用Hibernate初始化数据。通过`SessionFactory`创建`Session`,然后开启事务,创建`Customer`对象和多个`Order`对象,并将它们关联起来。每个订单都设置了一个地址,并添加到客户订单列表中,最后保存客户并提交事务。这个例子演示了如何在Hibernate中保存对象关系,以及如何使用事务确保数据一致性。 理解并熟练掌握这些检索方式,可以帮助开发者更高效地使用Hibernate进行数据库操作,提升开发效率并减少出错的可能性。在实际项目中,根据需求选择合适的查询方式是提高代码可读性和维护性的重要策略。
![](https://csdnimg.cn/release/download_crawler_static/9770647/bge.jpg)
![](https://csdnimg.cn/release/download_crawler_static/9770647/bgf.jpg)
![](https://csdnimg.cn/release/download_crawler_static/9770647/bg10.jpg)
![](https://csdnimg.cn/release/download_crawler_static/9770647/bg11.jpg)
剩余83页未读,继续阅读
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://profile-avatar.csdnimg.cn/639a77740b4e4be19b83f1f8d89632b6_juliantem.jpg!1)
- 粉丝: 129
- 资源: 30
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 多模态联合稀疏表示在视频目标跟踪中的应用
- Kubernetes资源管控与Gardener开源软件实践解析
- MPI集群监控与负载平衡策略
- 自动化PHP安全漏洞检测:静态代码分析与数据流方法
- 青苔数据CEO程永:技术生态与阿里云开放创新
- 制造业转型: HyperX引领企业上云策略
- 赵维五分享:航空工业电子采购上云实战与运维策略
- 单片机控制的LED点阵显示屏设计及其实现
- 驻云科技李俊涛:AI驱动的云上服务新趋势与挑战
- 6LoWPAN物联网边界路由器:设计与实现
- 猩便利工程师仲小玉:Terraform云资源管理最佳实践与团队协作
- 类差分度改进的互信息特征选择提升文本分类性能
- VERITAS与阿里云合作的混合云转型与数据保护方案
- 云制造中的生产线仿真模型设计与虚拟化研究
- 汪洋在PostgresChina2018分享:高可用 PostgreSQL 工具与架构设计
- 2018 PostgresChina大会:阿里云时空引擎Ganos在PostgreSQL中的创新应用与多模型存储
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)