我可以让休眠通过工厂方法创建一个对象吗?
有没有办法在Hibernate中映射工厂方法(而不是让Hibernate调用默认构造函数并反射性地设置属性或字段)?
如果它无法映射,Hibernate是否为逐个类创建自定义对象提供了钩子?
谢谢!
有没有办法在Hibernate中映射工厂方法(而不是让Hibernate调用默认构造函数并反射性地设置属性或字段)?
如果它无法映射,Hibernate是否为逐个类创建自定义对象提供了钩子?
谢谢!
这可以通过以下方式之一实现:
EntityPersister
实现(您可以在休眠初始化期间使用自定义配置
注册特定实体)~或~Interceptor.instantiate()
方法的自定义 Interceptor
我认为拦截器方法更容易。以下是 Interceptor.instantiate()
的 javadoc:
/**
* Instantiate the entity class. Return <tt>null</tt> to indicate that Hibernate should use
* the default constructor of the class. The identifier property of the returned instance
* should be initialized with the given identifier.
*
* @param entityName the name of the entity
* @param entityMode The type of entity instance to be returned.
* @param id the identifier of the new instance
* @return an instance of the class, or <tt>null</tt> to choose default behaviour
*/
public Object instantiate(String entityName, EntityMode entityMode, Serializable id) throws CallbackException;