java – 在Hibernate中未加载对象时的警告
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 在Hibernate中未加载对象时的警告,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1322字,纯文字阅读大概需要2分钟。
内容图文
我想知道是否有一种方法告诉Hibernate在会话缓存中有太多特定类型的对象时生成某种控制台警告.我想这样做进行负载测试,因为我们在从Oracle加载BLOB时偶尔会出现OutOfMemoryException问题.
我们现在仍在使用Hibernate 3.6.10.我们目前用于此测试的最佳方法是生成比系统在正常用例中能够处理的更多数据,并尝试加载父对象并查看它是否崩溃.这样做只是感觉有点不好.
欢迎任何建议.
我忘了提到的一个注意事项是,这个“日志记录”的想法是我希望能够留在生产代码中来查明具体问题的.
– 编辑 –
这是我正在尝试做的一个例子:
假设我有一个@Entity ClassX,它有一个延迟加载的@Entity ClassY对象列表.一些方法,我希望当100个或更多ClassY实例加载到会话缓存中时,会发出一条日志消息.这样,在开发期间,我可以加载一个ClassX对象,并注意我是否(或团队中的其他开发人员)碰巧在我不应该访问该列表时.
解决方法:
您可以附加Interceptor来侦听对象加载事件,维护每个唯一实体类型的计数,并在超过某个阈值时记录警告. The documentation向您展示了如何通过在创建时传入它来定义会话范围的拦截器:
Session session = sf.openSession( new AuditInterceptor() );
很可能你并没有手动创建你的Session,所以这可能没有帮助,但可能你声明你的会话有一些传递拦截器的方式.
声明一个SessionFactory范围的拦截器更容易,但它似乎没有给你任何关于在其中创建对象的Session的引用,否则你将能够在WeakHashMap中敲出某种计数器(带有会话作为关键,以便你不泄漏内存).如果您使用默认的线程本地会话策略,那么您可以随时询问sessionFactory.getCurrentSession().
内容总结
以上是互联网集市为您收集整理的java – 在Hibernate中未加载对象时的警告全部内容,希望文章能够帮你解决java – 在Hibernate中未加载对象时的警告所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。