@ResponseBodyy返回Object对象, 该对象将会被ObjectMapper转化为json
如果框架里面使用了hibernate, 而且查询出来的对象有延迟加载的属性, 那就悲剧了
ObjectMapper把对象转化成json 的时候, 会读取lazy property, 这样, 就会发出多余的sql
幸好hibernate也发布了jar包对付此情况
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-hibernate4</artifactId>
<version>2.0.2</version>
</dependency>
就这么简单, Controller渲染@ResponseBody jsonView的时候, 遇到Lazy属性,就不会去加载它, 这样,就不会发出多余的sql
注意: 本文章主要描述的是Lazyload的jsonView问题, 假设的前提是Session和@Transactional都已经配置好的.