当前位置: 首页 > 面试题库 >

弃用后实现Hibernate UserType的最佳方法?

刁璞
2023-03-14
问题内容

我最近获得了最新版本的Hibernate,并且注意到我的UserTypes现在有警告,关于不赞成AbstractStandardBasicType的nullSafeGet(ResultSet,String)和nullSafeSet(PreparedStatement,T,int)方法,建议使用带有SessionImplementor参数的相应方法。问题在于,当您实现UserType时,SessionImplementor不会像BasicType,CompositeUserType等那样传递给您。

我检查了Hibernate手册,看看是否有更新的示例。他们的UserType示例使用get / set而不是nullSafeGet /
nullSafeSet,但是不赞成使用那些使用SessionImplementor的版本的方法。因此,似乎甚至Hibernate的官方UserType示例都在使用不推荐使用的方法,这使我想知道两件事:

  1. 是否可以从UserType中获取SessionImplementor?
  2. 如果从UserType中获取SessionImplementor是不切实际的,并且我不想编写自己的nullSafeGet / nullSafeSet,我是否应该放弃UserType而是选择其中一种?UserType与例如BasicType之间的实际区别是什么?

问题答案:

感谢Ryan
Ransford对我的原始问题的评论。尽管这并不是真正解决问题的方法,但他从Hibernate开发人员邮件列表中提供的链接说明了为什么没有可用的解决方案。

3.6.x中不能提供不建议使用的替代方法,因为这样做会破坏UserType的实现。

考虑到这些只是过时的警告,在下一个非维护版本可用时将过多的时间花在一个过时的解决方法上是没有意义的。不幸的是,下一个大版本是4.0,而不是3.7,因此迁移可能会涉及更多。



 类似资料:
  • 问题内容: 我们如何确定用于集合的方法的最佳实现(假设equals方法已被正确覆盖)? 问题答案: 最好的实现?这是一个难题,因为它取决于使用模式。 在几乎所有情况下,Josh Bloch的 有效Java项目8(第二版)中都提出了合理的良好实现。最好的办法是在那里查找,因为作者在那里解释了为什么这种方法很好。 简短版 1. 创建一个并分配一个非零值。 对于在方法中测试的每个字段 f,通过以下equ

  • 问题内容: 我打算通过此库在android中实现Socket.io,用于基于聊天的应用程序。据我了解,该图书馆似乎还不错。我想知道如何始终保持整个应用程序中的 单个 套接字连接吗?在这里,我列出了实现的方法,其中我需要最好和稳定的方法。 三种方式 MainApplication 类扩展 应用程序 这样,我们就可以在 主线程 (或应用程序的生命周期)中维护套接字连接,并且只要活动需要套接字实例,我们

  • 问题内容: 假设我们有一个活动,该活动有很多视图要注册。 最常见的实现方法是让Activity-Subclass实现OnClickListener,如下所示: 我喜欢实现它的方式是在Activity-Subclass内部创建一个私有类,并让该内部类实现OnClickListener: 这样,代码看起来更加井井有条,易于维护。 此外,在谈论“ Is-a”,“ Has-a”关系时,后者似乎是一个好习惯

  • 问题内容: 我看过这样的例子: 并假设我可以有一个Constants类来包装常量,并声明它们为static final。我几乎不了解Java,并且想知道这是否是创建常量的最佳方法。 问题答案: 这是完全可以接受的,甚至可能是标准。 类型是哪里,是所有大写字母的名称,下划线带有空格,并且VALUE是常量值; 我强烈建议不要将常量放在自己的类或接口中。 附带说明:声明为final且可变的变量仍然可以更

  • 问题内容: 我的iPhone应用程序连接到我的PHP Web服务,以从MySQL数据库检索数据。一个请求可以返回500个结果。 一次实现分页并检索20个项目的最佳方法是什么? 假设我从数据库中收到了前20个广告。现在如何请求接下来的20个广告? 问题答案: 从MySQL文档: LIMIT子句可用于约束SELECT语句返回的行数。LIMIT接受一个或两个数字参数,这两个参数都必须是非负整数常量(使用

  • 我有什么可用的选择来使用GWT来实现这一点?