摘要: 缓存是介于物理数据源与应用程序之间,是对数据库中的数据复制一份临时放在内存中的容器,其作用是为了减少应用程序对物理数据源访问的次数,从而提高了应用的运行性能。Hibernate在进行读取数据的时候,根据缓存机制在相应的缓存中查询,如果在缓存中找到了需要的数据(我们把这称做“缓存命中"),则就直接把命中的数据作为结果加以利用,避免了大量发送SQL语句到数据库查询的性能损耗。Hibernate缓存分类:一、Session缓存(又称作事务缓存):Hibernate内置的,不能卸除。缓存范围:缓存只能被当前Session对象访问。缓存的生命周期依赖于Session的生命周期,当Session 阅读全文
posted @ 2013-05-18 20:06 `仅此而已 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 1+N问题也可以叫N+1问题,什么是1+N问题呢?如果在一个对象里关联另一个对象,并且fetch = FetchType.EAGER。比如说ManyToOne(OneToMany也存在这种问题)关联,本来只需要取Many里的对象属性,可是Many里关联的对象都会单独再发一条语句取关联对象的属性。本来只用发一条就可以查出Many里的对象属性,可是它发了一条语句后,再发N条语句取关联对象的数据。解决办法:1、设置多的那方的FetchType为LAZY:在合适的时候才发出语句(按需要发语句)。2、BatchSize:在One对象设置Size后,取出Many里的数据后,再发N/Size条语句取关联对象 阅读全文
posted @ 2013-05-18 18:08 `仅此而已 阅读(264) 评论(0) 推荐(0) 编辑