有一用户表.
user :id , userName , password......
有一分组表.
role: id , roleName, ....
有一功能表.
function: id, functionName.. ..
他们是多对多关系.
有两个表做外键
表一
userrelationrole: userid, roleid 放用户权限的多对多映射
表二
permission : roleid,functionid 用于放权限和功能的多对多映射
在hibernate 中是用set,bag来做双向的多对多的..事关..list是不可以做双向的
hibernate代码片段:
<set name="users" table="userrelationrole" lazy="false" inverse="true" cascade="save-update" order-by="userId asc">
<cache usage="read-write"/>
<key column="roleId" />
<many-to-many class="org.ylcompany.rain.hibernate.User" column="userId" outer-join="auto" />
</set>
<set name="functions" table="permission" lazy="false" cascade="save-update" order-by="functionId">
<cache usage="read-write"/>
<key column="roleId" />
<many-to-many class="org.ylcompany.rain.hibernate.Function" column="functionId" />
</set>
hibernate代码片段
这个是role中的hibernate片段
假如当我和道一个userid的时候,我要得到这个用户的功能的时候,
就要
User user = (User)basedao.loadByKey(org.ylcompany.rain.hibernate.User.class,"userName",this.userName);
Set _roles = user.getRoles();
Iterator _it = _roles.iterator();
while(_it.hasNext() ){
Role role = (Role)_it.next();
Set _functions = role.getFunctions();
Function _function = new Function();
Iterator __it = _functions.iterator();
while(__it.hasNext() ){}}
要这样子去迭代..
都要这样子麻烦的去查找功能的吗..这个就是在hibernate中的级联查询吗?
有没方法,当知道userid时,当得到全部的function对象呢.?
还有就是.在hibernate中..的高级查询.用Restrictions来做日期的范围查询是可以..
有没方法直接去得到某月的记录呢..
这个当然我的记录中是有记录的日期时间的.
我对hibernate的高级查询,N表多表多关联不是太懂..请网友们帮手..回复一下.
分享到:
相关推荐
Hibernate支持多种关系映射,包括一对一(OneToOne)、一对多(OneToMany)、多对一(ManyToOne)、多对多(ManyToMany)。通过配置外键、联合主键、映射集合等方式,可以灵活地处理各种复杂关系。 10. **自定义...
4. **查询优化**:避免N+1查询问题,合理使用JOIN和子查询。 综上所述,Hibernate的高级操作涵盖了各种查询方式、关联管理、事务处理、缓存机制等多个方面,熟练掌握这些技巧将极大地提升开发效率和应用性能。通过...
通过本文的学习,读者应该能够掌握在Hibernate项目中如何正确地处理多对多关系的映射问题。需要注意的是,本文仅覆盖了Hibernate中多对多关系映射的基本用法,对于更高级的功能如懒加载、级联操作等,还需要进一步...
4. **实体类与表映射**:学习如何使用Hibernate注解或XML配置文件将Java类映射到数据库表,包括主键生成策略、字段映射、关联映射(一对一、一对多、多对一、多对多)等。 5. **Session与Transaction**:Hibernate...
这包括了主键生成策略、属性类型映射、关联关系(一对一、一对多、多对一、多对多)的配置,以及懒加载(Lazy Loading)和级联操作(Cascading)等高级特性。 在事务处理部分,手册会阐述Hibernate的事务管理机制,...
3. **对象关系映射**:深入讲解Hibernate的核心——对象关系映射(ORM),包括实体类的设计、属性注解、主键生成策略、关联映射(一对一、一对多、多对一、多对多)等,使开发者理解如何将Java对象与数据库表进行...
- 注意避免N+1查询问题,合理设计实体关系。 11. **其他高级特性** - 自动更新/创建数据库结构、级联操作、事件监听器、拦截器等。 通过学习这个“Hibernate完整PPT教程”,你不仅会了解Hibernate的基本概念,还...
Hibernate支持多种关系映射,如一对一(`@OneToOne`)、一对多(`@OneToMany`)、多对一(`@ManyToOne`)和多对多(`@ManyToMany`)。每种关系映射都有相应的配置方法。 11. **懒加载(Lazy Loading)** 通过`@...
理解并合理使用这两种策略能有效避免N+1查询问题,优化性能。 **三、继承关系映射** `hibernate_extends_1`和`hibernate_extends_2`展示了Hibernate如何处理类的继承关系。Hibernate支持单继承和多层继承的映射,...
- 故障排查和性能优化:讨论常见问题及解决办法,如N+1查询问题,以及如何优化Hibernate查询性能。 通过本教案的学习,你将能够熟练掌握数据库的基本操作,理解Hibernate的核心功能,以及如何利用AJAX提升Web应用...
对于更复杂的关系,例如一对一、一对多、多对一、多对多的关联,Hibernate提供了多种解决方案。例如,`Class1`和`Class2`的一对一双向关联,可以在两个类中都添加对方的引用,并在数据库中通过外键关联两个表的主键...
3. 关系映射:涵盖了单向和双向关联、一对多、一对一、多对一和多对多的关系映射实现,以及集合的处理,如List、Set、Map等。 4. 高级特性:深入讨论了懒加载、级联操作、缓存机制(一级缓存和二级缓存)、延迟加载...
- 什么是Hibernate的N+1查询问题,如何避免? - 如何在Hibernate中实现多对多关联? 本资料集将围绕这些知识点展开,帮助开发者掌握Hibernate的核心概念和实践技巧,为面试做好充分准备。对于想要深入学习和研究...
2. 合理设计实体关系,避免N+1查询问题。 3. 懂得何时使用Session和Transaction,避免数据一致性问题。 4. 适当使用二级缓存,但需考虑数据同步和并发控制。 5. 学习和理解HQL,避免过多的SQL直接操作。 总结,...
2. 数据库映射:详述了Hibernate的XML映射文件(Hibernate Mapping File,hbm.xml)和注解映射方式,如何定义实体属性与数据库字段的对应关系,以及一对多、一对一、多对多等关联关系的处理。 3. Session和...
3. 避免N+1查询问题:通过预加载关联数据或使用`JOIN`查询减少额外的数据库调用。 九、高级特性 1. 异步操作:通过Hibernate的事件监听器,可以实现异步持久化操作。 2. 移动对象:`DetachedCriteria`允许在不打开...
同时,注意避免N+1查询问题,即在获取父实体时因懒加载引发的大量额外查询,可以通过预加载(eager fetching)或使用JOIN查询来解决。 在提供的链接中,可以找到更多关于Hibernate一对多关联的实例和详细解释,包括...
- **查询优化**:合理使用索引、避免N+1查询等问题。 - **对象图遍历优化**:利用延迟加载等技术减少不必要的数据加载。 - **缓存策略**:正确配置一级缓存和二级缓存来提升性能。 #### 十一、集成测试 - **单元...
7. **懒加载与立即加载**:探讨Hibernate的懒加载机制,如何避免N+1查询问题,以及何时使用立即加载。 8. **缓存机制**:介绍Hibernate的缓存层次,一级缓存(Session缓存)、二级缓存(SessionFactory缓存)和查询...
除此之外,手册还会涉及性能优化技巧,如延迟加载(Lazy Loading)、批处理(Batch Processing)、缓存策略调整以及如何避免N+1查询问题。在实战章节,将有实例演示如何在实际项目中整合Hibernate,包括Spring框架下...