Spring Data JPA踩坑到填坑:1

JPA多对多关

//作者表

//书籍表

Book和Author是多对多关系

先放两张图做个说明:Jpa底层依赖于hibernate,hibernate默认是有懒加载机制优化的

  • 可以发现:默认是开启了懒加载的,当我们要是要到该有的查询结果的时候,JPA才会去给我们查询

  • 通过在@ManyToMany注解中配置属性:fetch = FetchType.EAGER

  • 而这个页面的信息告诉我们,hibernate是急性加载的,一次性家读取所有的数据,然后再被使用

可能引发的问题

  • failed to lazily initialize a collection of role,could not initialize proxy - no Session

  • 这个问题主要来源于我测试的时候发现的,没有添加任何事务,JPA查询数据后,自动关闭了会话

  • 懒加载我也手动关闭,所以当我想要使用数据的时候,会话其实已经关闭了,导致懒加载查询数据失败

  • 应对方法:

    • 懒加载环境:手动给事务,尽量在事务包裹的时候将数据全部取出来;

    • 懒加载关闭:一次性读取全部数据,无需理会

  • ToString()方法引发栈移除

  • 当我们对对多的时候,想打印一个检索结果,这个时候如果我们通过使用lombok的@ToString注解,或者自动生成ToString方法,都会造成栈内存溢出

  • A对象中有一个List<B> ,而B对象中也有一个List<A>,如果你不切断一个其中ToString关于集合的打印,这就是一个无线轮回的过程,就会造成栈移除

  • 应对方法:

    • 看你需要那一边的数据为主,如果是A对象的数据为主,就把B对象的ToString中关于属性List<A>属性的打印给干掉,即可房子无线循环问题

1

最新文章

  1. Webgl的2D开发方案(一)spritebatcher
  2. 图——拓扑排序(uva10305)
  3. D. Game with Strings
  4. Tomcat 和 Resin 比较,哪个更适合你?
  5. windows raid mode重新安装系统(win10)
  6. 这些优化 Drupal 网站速度的超简单办法,你忽略了多少?
  7. js高程笔记1-3章
  8. 深层次详解Exception
  9. centos 下mysql操作
  10. CSS彻底研究(2)
  11. Code Sign error: No code signing identities found: No valid signing identities
  12. 3)Javascript设计模式:Observer模式
  13. 不适合使用hadoop来解决的问题
  14. Python 爬58同城 城市租房信息
  15. Redis进阶实践之九 独立封装的RedisClient客户端工具类(转载9)
  16. [cb]NGUI事件及复杂UI管理
  17. AT24C02跨页写数据
  18. 「Android 开发」入门笔记
  19. 如何在ie6/ie7/ie8中实现iframe背景透明
  20. JZOJ.5328【NOIP2017模拟8.22】世界线

热门文章

  1. 【leetcode】997. Find the Town Judge
  2. C/C++ C++ 11 std::move()
  3. PHP filter_id() 函数
  4. oracle-字符串常用函数
  5. 彻底理解 JS 中 this 的指向
  6. Network基础(二):数制转换
  7. StringUtils 方法全集
  8. js千位符 | js 千位分隔符 | js 金额格式化
  9. 避开PCB假八层结构的温柔陷阱---浅谈六层板的叠层
  10. Cocos2d-x之Scene