## org.hibernate.tuple.entity
Interface EntityTuplizer

All Superinterfaces:
  Tuplizer

All Known Implementing Classes:
  AbstractEntityTuplizer, Dom4jEntityTuplizer, DynamicMapEntityTuplizer, PojoEntityTuplizer

    public interface EntityTuplizer

extends Tuplizer

Defines further responsibilities reagarding tuplization based on a mapped entity.

EntityTuplizer implementations should have the following constructor signature: (org.hibernate.tuple.entity.EntityMetamodel, org.hibernate.mapping.PersistentClass)

Author:
  Gavin King, Steve Ebersole

Method Summary
`void` `afterInitialize(Object entity, boolean lazyPropertiesAreUnfetched, SessionImplementor session)` Called just after the entities properties have been initialized.
`Object` `createProxy(Serializable id, SessionImplementor session)` Generates an appropriate proxy representation of this entity for this entity-mode.
`String` `determineConcreteSubclassEntityName(Object entityInstance, SessionFactoryImplementor factory)` Given an entity instance, determine the most appropriate (most targeted) entity-name which represents it.
`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 any `EntityNameResolvers` associated with this `Tuplizer`.
`Serializable` `getIdentifier(Object entity)` Deprecated. Use `getIdentifier(Object,SessionImplementor)` instead.
`Serializable` `getIdentifier(Object entity, SessionImplementor session)` Extract the identifier value from the given entity.
`Getter` `getIdentifierGetter()` Retrieve the getter for the identifier property.
`Object` `getPropertyValue(Object entity, String propertyName)` Extract the value of a particular property from the given entity.
`Object[]` `getPropertyValuesToInsert(Object entity, Map mergeMap, SessionImplementor session)` Extract the values of the insertable properties of the entity (including backrefs)
`Object` `getVersion(Object entity)` Extract the value of the version property from the given entity.
`Getter` `getVersionGetter()` Retrieve the getter for the version property.
`boolean` `hasProxy()` Does this entity, for this mode, present a possibility for proxying?
`boolean` `hasUninitializedLazyProperties(Object entity)` Does the given entity instance have any currently uninitialized lazy properties?
`Object` `instantiate(Serializable id)` Deprecated. Use `instantiate(Serializable, SessionImplementor)` instead.
`Object` `instantiate(Serializable id, SessionImplementor session)` Create an entity instance initialized with the given identifier.
`boolean` `isInstrumented()` Is it an instrumented POJO?
`boolean` `isLifecycleImplementor()` Does the `class` managed by this tuplizer implement the `Lifecycle` interface.
`boolean` `isValidatableImplementor()` Does the `class` managed by this tuplizer implement the `Validatable` interface.
`void` `resetIdentifier(Object entity, Serializable currentId, Object currentVersion)` Deprecated. Use `resetIdentifier(Object, Serializable, Object, SessionImplementor)` instead
`void` `resetIdentifier(Object entity, Serializable currentId, Object currentVersion, SessionImplementor session)` Inject the given identifier and version into the entity, in order to "roll back" to their original values.
`void` `setIdentifier(Object entity, Serializable id)` Deprecated. Use `setIdentifier(Object, Serializable, SessionImplementor)` instead.
`void` `setIdentifier(Object entity, Serializable id, SessionImplementor session)` Inject the identifier value into the given entity.
`void` `setPropertyValue(Object entity, int i, Object value)` Inject the value of a particular property.
`void` `setPropertyValue(Object entity, String propertyName, Object value)` Inject the value of a particular property.

Methods inherited from interface org.hibernate.tuple.Tuplizer
`getGetter, getMappedClass, getPropertyValue, getPropertyValues, instantiate, isInstance, setPropertyValues`

Method Detail

### getEntityMode

    EntityMode getEntityMode()

  Return the entity-mode handled by this tuplizer instance.

  Returns:
    The entity-mode

### instantiate

    Object instantiate(Serializable id)
                       throws HibernateException

  Deprecated. Use `instantiate(Serializable, SessionImplementor)` instead.

  Create an entity instance initialized with the given identifier.

  Parameters:
    `id` - The identifier value for the entity to be instantiated.
  Returns:
    The instantiated entity.
  Throws:
    `HibernateException`

### instantiate

    Object instantiate(Serializable id,
                       SessionImplementor session)

  Create an entity instance initialized with the given identifier.

  Parameters:
    `id` - The identifier value for the entity to be instantiated.
    `session` - The session from which is requests originates
  Returns:
    The instantiated entity.

### getIdentifier

    Serializable getIdentifier(Object entity)
                               throws HibernateException

  Deprecated. Use `getIdentifier(Object,SessionImplementor)` instead.

  Extract the identifier value from the given entity.

  Parameters:
    `entity` - The entity from which to extract the identifier value.
  Returns:
    The identifier value.
  Throws:
    `HibernateException` - If the entity does not define an identifier property, or an error occurs accessing its value.

### getIdentifier

    Serializable getIdentifier(Object entity,
                               SessionImplementor session)

  Extract the identifier value from the given entity.

  Parameters:
    `entity` - The entity from which to extract the identifier value.
    `session` - The session from which is requests originates
  Returns:
    The identifier value.

### setIdentifier

    void setIdentifier(Object entity,
                       Serializable id)
                       throws HibernateException

  Deprecated. Use `setIdentifier(Object, Serializable, SessionImplementor)` instead.

  Inject the identifier value into the given entity. Has no effect if the entity does not define an identifier property

  Parameters:
    `entity` - The entity to inject with the identifier value.
    `id` - The value to be injected as the identifier.
  Throws:
    `HibernateException`

### setIdentifier

    void setIdentifier(Object entity,
                       Serializable id,
                       SessionImplementor session)

  Inject the identifier value into the given entity. Has no effect if the entity does not define an identifier property

  Parameters:
    `entity` - The entity to inject with the identifier value.
    `id` - The value to be injected as the identifier.
    `session` - The session from which is requests originates

### resetIdentifier

    void resetIdentifier(Object entity,
                         Serializable currentId,
                         Object currentVersion)

  Deprecated. Use `resetIdentifier(Object, Serializable, Object, SessionImplementor)` instead

  Inject the given identifier and version into the entity, in order to "roll back" to their original values.

  Parameters:
    `entity` - The entity for which to reset the id/version values
    `currentId` - The identifier value to inject into the entity.
    `currentVersion` - The version value to inject into the entity.

### resetIdentifier

    void resetIdentifier(Object entity,
                         Serializable currentId,
                         Object currentVersion,
                         SessionImplementor session)

  Inject the given identifier and version into the entity, in order to "roll back" to their original values.

  Parameters:
    `entity` - The entity for which to reset the id/version values
    `currentId` - The identifier value to inject into the entity.
    `currentVersion` - The version value to inject into the entity.
    `session` - The session from which the request originated

### getVersion

    Object getVersion(Object entity)
                      throws HibernateException

  Extract the value of the version property from the given entity.

  Parameters:
    `entity` - The entity from which to extract the version value.
  Returns:
    The value of the version property, or null if not versioned.
  Throws:
    `HibernateException`

### setPropertyValue

    void setPropertyValue(Object entity,
                          int i,
                          Object value)
                          throws HibernateException

  Inject the value of a particular property.

  Parameters:
    `entity` - The entity into which to inject the value.
    `i` - The property's index.
    `value` - The property value to inject.
  Throws:
    `HibernateException`

### setPropertyValue

    void setPropertyValue(Object entity,
                          String propertyName,
                          Object value)
                          throws HibernateException

  Inject the value of a particular property.

  Parameters:
    `entity` - The entity into which to inject the value.
    `propertyName` - The name of the property.
    `value` - The property value to inject.
  Throws:
    `HibernateException`

### getPropertyValuesToInsert

    Object[] getPropertyValuesToInsert(Object entity,
                                       Map mergeMap,
                                       SessionImplementor session)
                                       throws HibernateException

  Extract the values of the insertable properties of the entity (including backrefs)

  Parameters:
    `entity` - The entity from which to extract.
    `mergeMap` - a map of instances being merged to merged instances
    `session` - The session in which the resuest is being made.
  Returns:
    The insertable property values.
  Throws:
    `HibernateException`

### getPropertyValue

    Object getPropertyValue(Object entity,
                            String propertyName)
                            throws HibernateException

  Extract the value of a particular property from the given entity.

  Parameters:
    `entity` - The entity from which to extract the property value.
    `propertyName` - The name of the property for which to extract the value.
  Returns:
    The current value of the given property on the given entity.
  Throws:
    `HibernateException`

### afterInitialize

    void afterInitialize(Object entity,
                         boolean lazyPropertiesAreUnfetched,
                         SessionImplementor session)

  Called just after the entities properties have been initialized.

  Parameters:
    `entity` - The entity being initialized.
    `lazyPropertiesAreUnfetched` - Are defined lazy properties currently unfecthed
    `session` - The session initializing this entity.

### hasProxy

    boolean hasProxy()

  Does this entity, for this mode, present a possibility for proxying?

  Returns:
    True if this tuplizer can generate proxies for this entity.

### createProxy

    Object createProxy(Serializable id,
                       SessionImplementor session)
                       throws HibernateException

  Generates an appropriate proxy representation of this entity for this entity-mode.

  Parameters:
    `id` - The id of the instance for which to generate a proxy.
    `session` - The session to which the proxy should be bound.
  Returns:
    The generate proxies.
  Throws:
    `HibernateException` - Indicates an error generating the proxy.

### isLifecycleImplementor

    boolean isLifecycleImplementor()

  Does the `class` managed by this tuplizer implement the `Lifecycle` interface.

  Returns:
    True if the Lifecycle interface is implemented; false otherwise.

### isValidatableImplementor

    boolean isValidatableImplementor()

  Does the `class` managed by this tuplizer implement the `Validatable` interface.

  Returns:
    True if the Validatable interface is implemented; false otherwise.

### getConcreteProxyClass

    Class getConcreteProxyClass()

  Returns the java class to which generated proxies will be typed.

  todo : look at fully encapsulating `PersistenceContext.narrowProxy(java.lang.Object, org.hibernate.persister.entity.EntityPersister, org.hibernate.engine.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

### hasUninitializedLazyProperties

    boolean hasUninitializedLazyProperties(Object entity)

  Does the given entity instance have any currently uninitialized lazy properties?

  Parameters:
    `entity` - The entity to be check for uninitialized lazy properties.
  Returns:
    True if uninitialized lazy properties were found; false otherwise.

### isInstrumented

    boolean isInstrumented()

  Is it an instrumented POJO?

### getEntityNameResolvers

    EntityNameResolver[] getEntityNameResolvers()

  Get any `EntityNameResolvers` associated with this `Tuplizer`.

  Returns:
    The associated resolvers. May be null or empty.

### determineConcreteSubclassEntityName

    String determineConcreteSubclassEntityName(Object entityInstance,
                                               SessionFactoryImplementor factory)

  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.
  Throws:
    `HibernateException` - If we are unable to determine an entity-name within the inheritence hierarchy.

### getIdentifierGetter

    Getter getIdentifierGetter()

  Retrieve the getter for the identifier property. May return null.

  Returns:
    The getter for the identifier property.

### getVersionGetter

    Getter getVersionGetter()

  Retrieve the getter for the version property. May return null.

  Returns:
    The getter for the version property.

Copyright © 2001-2010 Red Hat, Inc. All Rights Reserved.