网站怎么加载图片做logo,企业工商信息查询接口,wordpress手机端插件,ps如何做音乐网站刚开始接触这种数据持久化框架时#xff0c;使用的是Maybatis#xff0c;相较于最原始的JDBCSQL模式#xff0c;Maybatis简直就是神器#xff0c;特别是在用过Maybatis动态SQL后#xff0c;简直就开始对Maybatis爱不释手。后来工作要求#xff0c;又接触到了Hibernate使用的是Maybatis相较于最原始的JDBCSQL模式Maybatis简直就是神器特别是在用过Maybatis动态SQL后简直就开始对Maybatis爱不释手。后来工作要求又接触到了Hibernate刚入手时还是很不适应的感觉这个持久化框架已近偏离传统的SQL模式一切都只能重新学习。用过一段时间Hibernate后才发现了它的便利性。
之前问过公司的大佬为啥要用Maybatis得到的答案是出于性能的要求由于数据量庞大轻便的Maybatis在性能上表现的更加优异。不过后来随着对Hibernate认识的加深才发现Hibernate在性能上也并没有落下。比如懒加载就很好的解决了Hibernate性能方面的一些问题。在配置映射时我们不可能说像Maybatis一样哪次用什么我们就查什么Hibernate的映射必须是完整的。所以这就导致了每次Hibernate加载时都会更具映射关系把所有关联数据查询出来。但是其中很多可能是我们并不需要的。这就浪费了很多的系统资源而Hibernate懒加载就很好的解决了这个问题通过代理的方式在你查询一个对象时Hibernate并不会立马去查询数据库而是生成一个代理对象当你要获取对象的属性字段值时才会去真正的查询对象。不得不说这很有效。
但是这种方式也存在一个问题就是拿到代理对象后session忽然关闭了这时再想去执行查询的时候就查不到数据了。而且还会抛出org.hibernate.LazyInitializationException。
一般来说这种问题是很容易被发现的但是有些Hibernate项目经常是使用了AspectJ来进行切面处理的这就使得LazyInitializationException不那么容易被发现了。可能自己查到了一个对象传给了某个方法之后再来获取对象的属性时就报错了。
知道了原因就很好解决这个问题了我们只要在原来的回话被结束掉之前把对象的相关属性拿出来再去使用这样就不会有问题了。或者直接改映射文件的配置不推荐。