Package org.hibernate.tuple.entity
Class PojoEntityTuplizer
- java.lang.Object
-
- org.hibernate.tuple.entity.AbstractEntityTuplizer
-
- org.hibernate.tuple.entity.PojoEntityTuplizer
-
- All Implemented Interfaces:
EntityTuplizer
,Tuplizer
public class PojoEntityTuplizer extends AbstractEntityTuplizer
AnEntityTuplizer
specific to the pojo entity mode.
-
-
Field Summary
-
Fields inherited from class org.hibernate.tuple.entity.AbstractEntityTuplizer
getters, hasCustomAccessors, propertySpan, setters
-
-
Constructor Summary
Constructors Constructor Description PojoEntityTuplizer(EntityMetamodel entityMetamodel, PersistentClass mappedEntity)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
afterInitialize(java.lang.Object entity, SharedSessionContractImplementor session)
Called just after the entities properties have been initialized.protected Instantiator
buildInstantiator(EntityMetamodel entityMetamodel, PersistentClass persistentClass)
Build an appropriate Instantiator for the given mapped entity.protected Getter
buildPropertyGetter(Property mappedProperty, PersistentClass mappedEntity)
Build an appropriate Getter for the given property.protected Setter
buildPropertySetter(Property mappedProperty, PersistentClass mappedEntity)
Build an appropriate Setter for the given property.protected ProxyFactory
buildProxyFactory(PersistentClass persistentClass, Getter idGetter, Setter idSetter)
Build an appropriate ProxyFactory for the given mapped entity.protected ProxyFactory
buildProxyFactoryInternal(PersistentClass persistentClass, Getter idGetter, Setter idSetter)
java.lang.String
determineConcreteSubclassEntityName(java.lang.Object entityInstance, SessionFactoryImplementor factory)
Given an entity instance, determine the most appropriate (most targeted) entity-name which represents it.java.lang.Class
getConcreteProxyClass()
Returns the java class to which generated proxies will be typed.EntityMode
getEntityMode()
Return the entity-mode handled by this tuplizer instance.EntityNameResolver[]
getEntityNameResolvers()
Get anyEntityNameResolvers
associated with thisTuplizer
.java.lang.Class
getMappedClass()
Return the pojo class managed by this tuplizer.java.lang.Object[]
getPropertyValues(java.lang.Object entity)
Extract the current values contained on the given entity.java.lang.Object[]
getPropertyValuesToInsert(java.lang.Object entity, java.util.Map mergeMap, SharedSessionContractImplementor session)
Extract the values of the insertable properties of the entity (including backrefs)protected java.lang.Object[]
getPropertyValuesWithOptimizer(java.lang.Object object)
boolean
isLifecycleImplementor()
void
setPropertyValues(java.lang.Object entity, java.lang.Object[] values)
Inject the given values into the given entity.protected void
setPropertyValuesWithOptimizer(java.lang.Object object, java.lang.Object[] values)
-
Methods inherited from class org.hibernate.tuple.entity.AbstractEntityTuplizer
createProxy, getComponentValue, getEntityMetamodel, getEntityName, getFactory, getGetter, getIdentifier, getIdentifier, getIdentifierGetter, getIdentifierMapperType, getInstantiator, getPropertyValue, getPropertyValue, getProxyFactory, getSubclassEntityNames, getVersion, getVersionGetter, hasProxy, instantiate, instantiate, instantiate, isInstance, resetIdentifier, resetIdentifier, setIdentifier, setIdentifier, setPropertyValue, setPropertyValue, shouldGetAllProperties, toString
-
-
-
-
Constructor Detail
-
PojoEntityTuplizer
public PojoEntityTuplizer(EntityMetamodel entityMetamodel, PersistentClass mappedEntity)
-
-
Method Detail
-
buildProxyFactory
protected ProxyFactory buildProxyFactory(PersistentClass persistentClass, Getter idGetter, Setter idSetter)
Description copied from class:AbstractEntityTuplizer
Build an appropriate ProxyFactory for the given mapped entity.- Specified by:
buildProxyFactory
in classAbstractEntityTuplizer
- Parameters:
persistentClass
- The mapping information regarding the mapped entity.idGetter
- The constructed Getter relating to the entity's id property.idSetter
- The constructed Setter relating to the entity's id property.- Returns:
- An appropriate ProxyFactory instance.
-
buildProxyFactoryInternal
protected ProxyFactory buildProxyFactoryInternal(PersistentClass persistentClass, Getter idGetter, Setter idSetter)
-
buildInstantiator
protected Instantiator buildInstantiator(EntityMetamodel entityMetamodel, PersistentClass persistentClass)
Description copied from class:AbstractEntityTuplizer
Build an appropriate Instantiator for the given mapped entity.- Specified by:
buildInstantiator
in classAbstractEntityTuplizer
persistentClass
- The mapping information regarding the mapped entity.- Returns:
- An appropriate Instantiator instance.
-
setPropertyValues
public void setPropertyValues(java.lang.Object entity, java.lang.Object[] values) throws HibernateException
Description copied from interface:Tuplizer
Inject the given values into the given entity.- Specified by:
setPropertyValues
in interfaceTuplizer
- Overrides:
setPropertyValues
in classAbstractEntityTuplizer
- Parameters:
entity
- The entity.values
- The values to be injected.- Throws:
HibernateException
-
getPropertyValues
public java.lang.Object[] getPropertyValues(java.lang.Object entity) throws HibernateException
Description copied from interface:Tuplizer
Extract the current values contained on the given entity.- Specified by:
getPropertyValues
in interfaceTuplizer
- Overrides:
getPropertyValues
in classAbstractEntityTuplizer
- Parameters:
entity
- The entity from which to extract values.- Returns:
- The current property values.
- Throws:
HibernateException
-
getPropertyValuesToInsert
public java.lang.Object[] getPropertyValuesToInsert(java.lang.Object entity, java.util.Map mergeMap, SharedSessionContractImplementor session)
Description copied from interface:EntityTuplizer
Extract the values of the insertable properties of the entity (including backrefs)- Specified by:
getPropertyValuesToInsert
in interfaceEntityTuplizer
- Overrides:
getPropertyValuesToInsert
in classAbstractEntityTuplizer
- Parameters:
entity
- The entity from which to extract.mergeMap
- a map of instances being merged to merged instancessession
- The session in which the resuest is being made.- Returns:
- The insertable property values.
-
setPropertyValuesWithOptimizer
protected void setPropertyValuesWithOptimizer(java.lang.Object object, java.lang.Object[] values)
-
getPropertyValuesWithOptimizer
protected java.lang.Object[] getPropertyValuesWithOptimizer(java.lang.Object object)
-
getEntityMode
public EntityMode getEntityMode()
Description copied from interface:EntityTuplizer
Return the entity-mode handled by this tuplizer instance.- Returns:
- The entity-mode
-
getMappedClass
public java.lang.Class getMappedClass()
Description copied from interface:Tuplizer
Return the pojo class managed by this tuplizer. Need to determine how to best handle this for the Tuplizers for EntityModes other than POJO. todo : be really nice to not have this here since it is essentially pojo specific...- Returns:
- The persistent class.
-
isLifecycleImplementor
public boolean isLifecycleImplementor()
Description copied from interface:EntityTuplizer
- Specified by:
isLifecycleImplementor
in interfaceEntityTuplizer
- Overrides:
isLifecycleImplementor
in classAbstractEntityTuplizer
- Returns:
- True if the Lifecycle interface is implemented; false otherwise.
-
buildPropertyGetter
protected Getter buildPropertyGetter(Property mappedProperty, PersistentClass mappedEntity)
Description copied from class:AbstractEntityTuplizer
Build an appropriate Getter for the given property.- Specified by:
buildPropertyGetter
in classAbstractEntityTuplizer
- Parameters:
mappedProperty
- The property to be accessed via the built Getter.mappedEntity
- The entity information regarding the mapped entity owning this property.- Returns:
- An appropriate Getter instance.
-
buildPropertySetter
protected Setter buildPropertySetter(Property mappedProperty, PersistentClass mappedEntity)
Description copied from class:AbstractEntityTuplizer
Build an appropriate Setter for the given property.- Specified by:
buildPropertySetter
in classAbstractEntityTuplizer
- Parameters:
mappedProperty
- The property to be accessed via the built Setter.mappedEntity
- The entity information regarding the mapped entity owning this property.- Returns:
- An appropriate Setter instance.
-
getConcreteProxyClass
public java.lang.Class getConcreteProxyClass()
Description copied from interface:EntityTuplizer
Returns the java class to which generated proxies will be typed. todo : look at fully encapsulatingPersistenceContext.narrowProxy(java.lang.Object, org.hibernate.persister.entity.EntityPersister, org.hibernate.engine.spi.EntityKey, java.lang.Object)
here, since that is the only external use of this method- Returns:
- The java class to which generated proxies will be typed
-
afterInitialize
public void afterInitialize(java.lang.Object entity, SharedSessionContractImplementor session)
Description copied from interface:EntityTuplizer
Called just after the entities properties have been initialized.- Specified by:
afterInitialize
in interfaceEntityTuplizer
- Overrides:
afterInitialize
in classAbstractEntityTuplizer
- Parameters:
entity
- The entity being initialized.session
- The session initializing this entity.
-
determineConcreteSubclassEntityName
public java.lang.String determineConcreteSubclassEntityName(java.lang.Object entityInstance, SessionFactoryImplementor factory)
Description copied from interface:EntityTuplizer
Given an entity instance, determine the most appropriate (most targeted) entity-name which represents it. This is called in situations where we already know an entity name for the given entityInstance; we are being asked to determine if there is a more appropriate entity-name to use, specifically within an inheritence hierarchy. For example, consider a case where a user calls session.update( "Animal", cat );. Here, the user has explicitly provided Animal as the entity-name. However, they have passed in an instance of Cat which is a subclass of Animal. In this case, we would return Cat as the entity-name. null may be returned from calls to this method. The meaining of null in that case is assumed to be that we should use whatever explicit entity-name the user provided (Animal rather than Cat in the example above).- Parameters:
entityInstance
- The entity instance.factory
- Reference to the SessionFactory.- Returns:
- The most appropriate entity name to use.
-
getEntityNameResolvers
public EntityNameResolver[] getEntityNameResolvers()
Description copied from interface:EntityTuplizer
Get anyEntityNameResolvers
associated with thisTuplizer
.- Returns:
- The associated resolvers. May be null or empty.
-
-