使用hibernate一段时间,用着很爽,但最近碰到性能问题,不知道有没有什么解决方案。
1.如果有两张表Company和Employee,两者有关联这个不需要解释。
2.那么要想使用employee.getCompany()我已知有两种方式:
(1)配置lazy=false,但这样的话如果我只想要employee而不需要company的时候hibernate
也会把conpany查出来放到employee里面,万一employee有很多父表,那查一次
employee就是灾难性的。不过至少session查完就关闭了。
(2) 配置lazy=true,这种方式可以解决上面的问题,但前提是需要配置openSessionInView,
而这种方式也会有瓶颈,比如某些请求会因为网络阻塞等原因session一直开着,这样也会
耗尽连接池。
3.那么问题来了,有没有什么配置方式可以让hibernate在不使用openSessionInView情况下将两者优点结合在一起,即:在查询employee的时候不查询company,查完后关闭session,当我调用employee.getCompany()会再次打开session进行查询,查完后关闭session。我知道在业务逻辑里可以自己写,但这样开发效率不高。我就是想知道有没有什么方法配置一下就可以实现。谢谢!
关于hibernate的一个问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-