谈一点我对hibernate关联关系映射的看法
来源:互联网 发布:网络歌手灰色天空 编辑:程序博客网 时间:2024/06/13 21:15
hibernate作为持久层框架,除了实现最基本的ORM外,最重要的就是关联关系映射。通过配置实体间的关联,如one-to-one、one-to-many等,可以实现级联保存,级联查询等级联操作。最近在研究hibernate的关联映射,最后感觉:hibernate关联映射没太大用处,尤其是级联修改没有用,级联查询还有些用但是很鸡肋,这只是我个人的看法。我参与过几个项目,都没有使用hibernate关联映射;而且经过我自己的尝试,发现关联映射确实很难用。
首先我认为:级联保存、级联修改和级联删除是没有什么实际用处的。hibernate级联,无非是配置inverse和cascade等属性。经过我自己的尝试,使用级联操作,hibernate并没有什么特别的。我们完全可以程序里面自己控制:插入的时候,先插入父表再插入子表;删除的时候,先删除子表再删除父表。而且在代码中控制,语义更明显,效率上和hibernate也没有差异,而且实现难度也比配置级联更容易。
下面来看下级联查询:感觉也很鸡肋,主要是因为很难过滤关联的实体。可以先看下“Criteria查询”和"<set>中使用filter"这2篇文章。
想对关联实体过滤,的确可以通过Criteria或者filter或者<set>的where属性实现。但问题在于:使用where,只能写死在hbm.xml中,不能参数化;使用filter和Criteria略显繁琐,不过还好,也不是大问题。
使用HQL或者Criteria查询,无法回避一个问题:一旦在实体映射文件中配置好关联关系后,当访问关联实体的时候,hibernate会发出查询语句再次查询关联的实体,除非我们自己去设置关联的实体对象。使用filter或者where,既可以实现关联实体的懒加载,也能够实现关联实体的过滤,由于where不能参数化所以没有什么用,filter虽然略显繁琐,但是综合起来看应该是最佳选择了。
如果不需要对关联实体进行过滤,就是要在需要的时候查询出所有的关联实体,那么hibernate的关联查询确实很好用。但是如果要对关联实体过滤,那么就得稍微费一些工夫了。
- 谈一点我对hibernate关联关系映射的看法
- Hibernate完成多对多的关联关系映射
- Hibernate的关联关系映射
- Hibernate的关联关系映射
- Hibernate的关联关系映射
- Hibernate的关联关系映射
- Hibernate的关联关系映射
- Hibernate的映射关联关系
- hibernate关联关系的映射
- Hibernate 的关联关系映射
- Hibernate的关联关系映射
- 我对Hibernate的看法
- Hibernate关联关系映射(多对一关联映射)
- Hibernate 映射多对多关联关系
- Hibernate 映射多对多关联关系
- Hibernate关联关系映射---1对多
- Hibernate关联关系映射---多对多
- Hibernate关联关系映射---1对1
- android studio 导入第三方库的记录
- HashMap源码解析(JAVA 1.6)
- 设计模式-单例模式
- 1015. 德才论 (25)
- ubuntu15.10下wine问题
- 谈一点我对hibernate关联关系映射的看法
- 一个字体的设计
- 1016. 部分A+B (15)
- 绑定Repeater实现分页获取数据
- git的基本使用
- linux下C语言基础学习笔记2
- return和exit
- 高中同学聚会有感
- ios开发——UITextView展示txt电子书时的页数调整