[转]Hibernate3如何解决n+1 selects】的更多相关文章

摘自: http://blog.chinaunix.net/uid-20586655-id-287959.html     Hibernate3中取得多层数据的所产生的n+1 selects问题的解决: 其实这个问题在Hibernate in Action中已经有很多种解决办法了.但我觉得其中最好的办法是用Criteria 的FetchMode来解决,但是Hibernate in Action中写的很不详细.我昨晚试了好长时间来的到答案.下 面总结一下. 需求这样的,我有四张表(one,two,…
1.session的get()和load()有什么区别?     # get()如果没有找到持久化类返回null,有可能导致空指针异常.     # load()如果没有找到持久化类直接抛出异常.     # get()是直接加载数据,load()是延迟加载,当使用被加载数据的时候才发送SQL.简而言之:Hibernate对于load()认为数据库一定存在,因此可以放心的使用代理进行延迟加载,如果使用中发现了问题,那么只能抛出异常.而对于get方法一定要获取真实的数据,否则返回null. Dat…
Hibernate提供了一系列的查询接口,这些接口在实现上又有所不同.这里对Hibernate中的查询接口进行一个小结. 我们首先来看一下session加载实体对象的过程:Session在调用数据库查询前,首先会在缓存中进行查询.如果在内部缓存中通过实体类型和id进行查找并命中,数据状态合法,则直接返回.如果内部缓存中未发现有效数据,则查询第二级缓存,如果第二级缓存命中,则返回.如在第二级缓存中没有命中,则发起数据库查询操作(Select SQL),根据映射配置和Select SQL得到的Res…
建立Spring-Struts-Hibernate的步骤整理 1. 建立web project 2. 建立hernate, action, service包 3. 右击项目,add myeclipse libraray, 加入struts2.1-core, hibernate3.3-core, spring3.1-core 4. 右击项目,myeclipse, add spring capability, 在web.xml中增加 5. Add hiernate capability,选择数据源,…
项目结构: 开发平台: maven version 3.5 eclipse 4. 7 oxyen 最新:hibernate 5.x 引入问题 官网提供的必需选择只有 这个 当然还需要我们单独配置mysql connector. 后来测试会话工厂sessionfactory 成功 ;一般到这里可以认为配置成功了. 问题出现了: 当我执行save(0) : 报异常: org.hibernate.hql.internal.ast.QuerySyntaxException: User is not ma…
在项目中使用了SSH框架(Struts2 + Spring3+ Hibernate3),applicationContext中配置了sessionFactory <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dat…
1.在网上找了好久,今天终于解决了,如果你的myeclipse自动生成的添加hibernate3jar包时,依靠通常的方法是无法关联其相应版本的源代码的,就是你在编写代码是,按住ctrl + hibernate类名查看源码,选择Attach Source ,选择你解压的源码目录,当你点击OK时,没有任何反应,这是因为使用myeclipse自动添加的jar包时,只能使用下面这种方法来关联:   如下图所示:选择myeclipse菜单项选择 myeclipse-->Preference->Myec…
首先我们要明白什么叫丢失更新. 比如数据库有一个person表,里面有一条这样的数据 "5 zhangsan shenzhen"; 现在有两个事务A.B同时查找了这一条记录: A事务修改记录为"5 zhangsan beijing"; 提交事务 B事务修改记录为"5 lisi shenzhen"; 这时候B事务再去提交或者回滚数据就会出现覆盖A事务已经修改的内容,这种情况就叫做丢失更新. hibernate3中的解决方法:利用悲观锁.乐观锁 悲观…
1.问题复现 spring 3.0 + hibernate 3.2 spring mvc使用注解方式:service使用@service注解 事务使用@Transactional 事务配置使用 <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" /> <tx:annotation-driven transaction-man…
spring mvc使用注解方式:service使用@service注解 事务使用@Transactional 事务配置使用 <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" /> 在插入或更新数据时,无报错,但数据库中无结果,而查询正常.疑为事务未提交. 方式用来扫描该包以及其子包下的@Controller注解的类,纳入spr…