多对多集联关系查询
用户和角色两表
在用户表中查询角色信息
用户表实体
private Set<Role> roleSet = new HashSet<Role>();
用户表映射关系配置
<set name="roleSet" table="(1)t_userrole" (2)order-by="id desc" (3)inverse="true">
<key column="(4)userId"/>
<many-to-many class="(5)com.baidu.zh.model.role.Role" column="(6)roleId"/>
</set>
(1)中间表 (2)在进行查询是由于set无序所以排序了,(3)控制反转,在这里设为“false时,当表关联后,如果我对用户表进行修改,则将发出一条删除语句,把中间表中的信息删除,(4)用户表中关联的键 (5)角色实体类(角色关联外键)
代码优化:当进行链表查询时 必须将 lazy=”false”,才能查到角色中的信息,负责就会报错,但加上这个属性,查询次数较多,所以一般不用添加而有其他办法:
首先:在web.xml中配置
<filter>
<filter-name>openSessionInView</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSession InViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>openSessionInView</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
下面来说说 缓存 我用的是 ehcache
(1)下载解压后 将导入 ehcache-core-2.4.3.jar
(2) ehcache.xml文件 放在src下
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<!--
缓存到硬盘的路径
-->
<diskStore path="e:/ehcache"></diskStore>
<!--
默认设置
maxElementsInMemory : 在內存中最大緩存的对象数量。
eternal : 缓存的对象是否永远不变。
timeToIdleSeconds :可以操作对象的时间。
timeToLiveSeconds :缓存中对象的生命周期,时间到后查询数据会从数据库中读取。
overflowToDisk :内存满了,是否要缓存到硬盘。
-->
<defaultCache maxElementsInMemory="1" eternal="false"
timeToIdleSeconds="500" timeToLiveSeconds="600" overflowToDisk="true"></defaultCache>
<!--
指定缓存的对象。
下面出现的的属性覆盖上面出现的,没出现的继承上面的。
-->
</ehcache>
(3)在hibernate.cfg.xml文件中的配置
<!-- <property name="hibernate.hbm2ddl.auto">update</property> -->
<property name="cache.use_second_level_cache">true</property>
<property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
<property name="cache.use_query_cache">true</property>
(4)在映射文件中的配置
比如我们对菜单树要做缓存
我们就必须加上 <class-cache class="com.baidu.zhangy.model.menu.Menu" usage="read-write"/>
(5)查询时:query.setCacheable(true);
这样就设置好了,我们在平台上打印的sql 就减少了一大半。
相关推荐
除了上述提到的方法外,还有一些其他的技巧可以帮助进一步优化Hibernate持久层的性能: 1. **事务管理**:合理配置事务边界,确保最小化不必要的数据库锁定时间。 2. **连接池配置**:正确设置连接池的大小和超时...
测试类通常会展示如何在实际项目中应用这些配置和编程技巧,帮助开发者理解Hibernate和EhCache的集成过程。 总的来说,这个学习示例旨在帮助Java开发者了解和掌握如何在Hibernate项目中使用EhCache来提高性能。通过...
通过学习《孙卫琴 精通Hibernate源码》,开发者不仅可以掌握Hibernate的使用技巧,还能深入理解其内部工作原理,这对于优化应用性能、解决复杂问题以及进行框架扩展具有重要意义。对于那些想要提升自己在企业级Java...
了解并熟练掌握Hibernate的检索方式和优化技巧,能够帮助Java开发者编写出高效、可维护的代码,提升项目的整体性能。通过阅读和实践相关教程,如链接给出的iteye博客文章,可以进一步深化对这些概念的理解。在实际...
标签"Hibernate"提示我们,本教程的核心内容是关于Hibernate的使用技巧。 【知识点详解】 1. **Hibernate Query Language (HQL)** HQL是Hibernate提供的面向对象的查询语言,类似于SQL,但更专注于操作对象而非...
首先,Hibernate 4.1.4是Hibernate框架的一个稳定版本,它包含了众多的性能优化和新特性。此版本的主要改进在于对JPA 2.1规范的支持,这意味着开发者可以利用更多的标准API来处理数据,提高了代码的可移植性。此外,...
在Java实际开发中,开发者经常会遇到各种挑战,需要掌握一些实用的小技巧来提高代码质量、提升效率。以下是一些从博客文章"Java实际开发中的小技巧汇总"中可能涵盖的知识点,结合“源码”和“工具”的标签,我们可以...
在我一年半的开发经验中,我逐渐积累了对Hibernate的深入理解和实用技巧,现在就与大家分享一下这些关键知识点。 首先,我们要理解Hibernate的核心概念:实体(Entity)、持久化(Persistence)、会话(Session)和...
7. **性能调优**:分享C3P0的性能优化技巧,如调整连接池大小、设置合适的测试查询以确保连接有效性等。 8. **实战应用**:通过实际案例,演示如何在项目中集成C3P0和Hibernate,包括Maven或Gradle的依赖管理、配置...
此外,书中可能还会涵盖其他相关主题,如Spring框架的整合、事务管理策略、性能优化技巧以及最佳实践等。通过详尽的实例和实战指导,读者不仅能掌握Hibernate的基础,还能了解到如何在实际项目中有效地应用这些技术...
【Spring+Hibernate小程序】是一个基于Java的Web开发项目,它结合了Spring框架和Hibernate ORM工具...对于有经验的开发者,也可以通过它来复习和巩固这两款框架的使用技巧,以及如何在实际项目中优化它们的配置和性能。
- 查询优化技巧 - 批处理与延迟加载的最佳实践 - 并发控制策略 8. **高级特性** - 继承映射策略 - 多租户支持 - 跨库数据同步技术 9. **实战案例分析** - 企业级应用中的Hibernate部署策略 - 案例解析:...
#### 五、Hibernate 的优化技巧 - **懒加载**:默认情况下,Hibernate 使用懒加载策略,仅在真正需要时才加载关联的对象。 - **批处理**:通过设置适当的批次大小,可以减少数据库交互次数。 - **查询缓存**:启用...
这类笔记往往能提供一些官方文档中未提及的实用小贴士,如常见错误的解决方案、最佳实践以及一些性能调优的策略等,对于提升开发效率和代码质量有很大帮助。 最后,"hibernate-config.txt"是Hibernate的配置文件,...
Hibernate是一款开源的...总之,Hibernate中文帮助文档涵盖了Hibernate的基础知识、配置、操作及优化技巧,旨在帮助开发者高效、便捷地进行Java持久化开发。通过深入学习和实践,可以极大地提升开发效率和代码质量。
进一步,孙卫琴老师详细讲解了Hibernate的高级特性和最佳实践,如动态模型、延迟加载、懒加载和级联操作等,这些特性可以帮助开发者在实际项目中更好地优化代码。同时,她还强调了性能调优和问题排查技巧,这对于...
**五、Hibernate优化技巧** 1. **缓存策略调整**:合理配置缓存级别和缓存大小,避免内存溢出。 2. **批处理**:批量操作可以提高性能,如批处理插入、更新和查询。 3. **延迟加载优化**:避免不必要的懒加载,适时...
8. **优化与最佳实践**:介绍性能优化技巧,如缓存策略、批量操作、查询优化等,并分享一些开发中的最佳实践。 通过这样的教程,开发者不仅可以掌握四大框架的基本使用,还能了解到如何在实际项目中整合这些技术,...
9. **性能优化**:可能涉及到延迟加载、批处理、连接池等方面的优化技巧。 10. **实战演练**:可能提供一个小项目或案例,让学生实践所学知识。 通过这个“Hibernate-day01”的学习,初学者可以建立起对Hibernate...