¿La mejor manera de implementar un tipo de usuario de Hibernate después de desaprobaciones?

Recientemente obtuve la última versión de Hibernate y noté que mis UserTypes ahora tienen advertencias sobre los métodos nullSafeGet (ResultSet, String) y nullSafeSet (PreparedStatement, T, int) de AbstractStandardBasicTypobsolet a favor de sus métodos correspondientes que toman un argumento SessionImplementor. El problema es que cuando implementa un UserType, el SessionImplementor no se le pasa como lo hace en BasicType, CompositeUserType, etc.

Revisé el manual de Hibernate para ver si había un ejemplo actualizado. Su ejemplo de UserType usa get / set en lugar de nullSafeGet / nullSafeSet, pero esos métodos también fueron desaprobados en favor de las versiones que toman un SessionImplementor. Entonces, parece que incluso el ejemplo oficial de UserType de Hibernate está utilizando métodos obsoletos, lo que me lleva a preguntarme dos cosas:

¿Hay una buena manera de obtener el SessionImplementor desde el UserType? Si no es práctico obtener el SessionImplementor desde UserType, y no quiero escribir mi propio nullSafeGet / nullSafeSet, ¿debería abandonar UserType en favor de una de sus alternativas? ¿Cuáles son las diferencias prácticas entre UserType y, por ejemplo, BasicType?

Respuestas a la pregunta(1)

Su respuesta a la pregunta