⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 entitypersister.java

📁 一个Java持久层类库
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
//$Id: EntityPersister.java 11398 2007-04-10 14:54:07Z steve.ebersole@jboss.com $package org.hibernate.persister.entity;import java.io.Serializable;import java.util.Map;import org.hibernate.HibernateException;import org.hibernate.LockMode;import org.hibernate.MappingException;import org.hibernate.EntityMode;import org.hibernate.tuple.entity.EntityMetamodel;import org.hibernate.cache.CacheConcurrencyStrategy;import org.hibernate.cache.OptimisticCacheSource;import org.hibernate.cache.access.EntityRegionAccessStrategy;import org.hibernate.cache.entry.CacheEntryStructure;import org.hibernate.engine.CascadeStyle;import org.hibernate.engine.SessionFactoryImplementor;import org.hibernate.engine.SessionImplementor;import org.hibernate.engine.ValueInclusion;import org.hibernate.id.IdentifierGenerator;import org.hibernate.metadata.ClassMetadata;import org.hibernate.type.Type;import org.hibernate.type.VersionType;/** * Implementors define mapping and persistence logic for a particular * strategy of entity mapping.  An instance of entity persisters corresponds * to a given mapped entity. * <p/> * Implementors must be threadsafe (preferrably immutable) and must provide a constructor * matching the signature of: {@link org.hibernate.mapping.PersistentClass}, {@link org.hibernate.engine.SessionFactoryImplementor} * * @author Gavin King */public interface EntityPersister extends OptimisticCacheSource {	/**	 * The property name of the "special" identifier property in HQL	 */	public static final String ENTITY_ID = "id";	/**	 * Finish the initialization of this object.	 * <p/>	 * Called only once per {@link org.hibernate.SessionFactory} lifecycle,	 * after all entity persisters have been instantiated.	 *	 * @throws org.hibernate.MappingException Indicates an issue in the metdata.	 */	public void postInstantiate() throws MappingException;	/**	 * Return the SessionFactory to which this persister "belongs".	 *	 * @return The owning SessionFactory.	 */	public SessionFactoryImplementor getFactory();	// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    // stuff that is persister-centric and/or EntityInfo-centric ~~~~~~~~~~~~~~	// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~	/**	 * Returns an object that identifies the space in which identifiers of	 * this entity hierarchy are unique.  Might be a table name, a JNDI URL, etc.	 *	 * @return The root entity name.	 */	public String getRootEntityName();	/**	 * The entity name which this persister maps.	 *	 * @return The name of the entity which this persister maps.	 */	public String getEntityName();	/**	 * Retrieve the underlying entity metamodel instance...	 *	 *@return The metamodel	 */	public EntityMetamodel getEntityMetamodel();	/**	 * Determine whether the given name represents a subclass entity	 * (or this entity itself) of the entity mapped by this persister.	 *	 * @param entityName The entity name to be checked.	 * @return True if the given entity name represents either the entity	 * mapped by this persister or one of its subclass entities; false	 * otherwise.	 */	public boolean isSubclassEntityName(String entityName);	/**	 * Returns an array of objects that identify spaces in which properties of	 * this entity are persisted, for instances of this class only.	 * <p/>	 * For most implementations, this returns the complete set of table names	 * to which instances of the mapped entity are persisted (not accounting	 * for superclass entity mappings).	 *	 * @return The property spaces.	 */	public Serializable[] getPropertySpaces();	/**	 * Returns an array of objects that identify spaces in which properties of	 * this entity are persisted, for instances of this class and its subclasses.	 * <p/>	 * Much like {@link #getPropertySpaces()}, except that here we include subclass	 * entity spaces.	 *	 * @return The query spaces.	 */	public Serializable[] getQuerySpaces();	/**	 * Determine whether this entity supports dynamic proxies.	 *	 * @return True if the entity has dynamic proxy support; false otherwise.	 */	public boolean hasProxy();	/**	 * Determine whether this entity contains references to persistent collections.	 *	 * @return True if the entity does contain persistent collections; false otherwise.	 */	public boolean hasCollections();	/**	 * Determine whether any properties of this entity are considered mutable.	 *	 * @return True if any properties of the entity are mutable; false otherwise (meaning none are).	 */	public boolean hasMutableProperties();	/**	 * Determine whether this entity contains references to persistent collections	 * which are fetchable by subselect?	 *	 * @return True if the entity contains collections fetchable by subselect; false otherwise.	 */	public boolean hasSubselectLoadableCollections();	/**	 * Determine whether this entity has any non-none cascading.	 *	 * @return True if the entity has any properties with a cscade other than NONE;	 * false otherwise (aka, no cascading).	 */	public boolean hasCascades();	/**	 * Determine whether instances of this entity are considered mutable.	 *	 * @return True if the entity is considered mutable; false otherwise.	 */	public boolean isMutable();	/**	 * Determine whether the entity is inherited one or more other entities.	 * In other words, is this entity a subclass of other entities.	 *	 * @return True if other entities extend this entity; false otherwise.	 */	public boolean isInherited();	/**	 * Are identifiers of this entity assigned known before the insert execution?	 * Or, are they generated (in the database) by the insert execution.	 *	 * @return True if identifiers for this entity are generated by the insert	 * execution.	 */	public boolean isIdentifierAssignedByInsert();	/**	 * Get the type of a particular property by name.	 *	 * @param propertyName The name of the property for which to retrieve	 * the typpe.	 * @return The type.	 * @throws org.hibernate.MappingException Typically indicates an unknown	 * property name.	 */	public Type getPropertyType(String propertyName) throws MappingException;	/**	 * Compare the two snapshots to determine if they represent dirty state.	 *	 * @param currentState The current snapshot	 * @param previousState The baseline snapshot	 * @param owner The entity containing the state	 * @param session The originating session	 * @return The indices of all dirty properties, or null if no properties	 * were dirty.	 */	public int[] findDirty(Object[] currentState, Object[] previousState, Object owner, SessionImplementor session);	/**	 * Compare the two snapshots to determine if they represent modified state.	 *	 * @param old The baseline snapshot	 * @param current The current snapshot	 * @param object The entity containing the state	 * @param session The originating session	 * @return The indices of all modified properties, or null if no properties	 * were modified.	 */	public int[] findModified(Object[] old, Object[] current, Object object, SessionImplementor session);	/**	 * Determine whether the entity has a particular property holding	 * the identifier value.	 *	 * @return True if the entity has a specific property holding identifier value.	 */	public boolean hasIdentifierProperty();	/**	 * Determine whether detahced instances of this entity carry their own	 * identifier value.	 * <p/>	 * The other option is the deperecated feature where users could supply	 * the id during session calls.	 *	 * @return True if either (1) {@link #hasIdentifierProperty()} or	 * (2) the identifier is an embedded composite identifier; false otherwise.	 */	public boolean canExtractIdOutOfEntity();	/**	 * Determine whether optimistic locking by column is enabled for this	 * entity.	 *	 * @return True if optimistic locking by column (i.e., <version/> or	 * <timestamp/>) is enabled; false otherwise.	 */	public boolean isVersioned();	/**	 * If {@link #isVersioned()}, then what is the type of the property	 * holding the locking value.	 *	 * @return The type of the version property; or null, if not versioned.	 */	public VersionType getVersionType();	/**	 * If {@link #isVersioned()}, then what is the index of the property	 * holding the locking value.	 *	 * @return The type of the version property; or -66, if not versioned.	 */	public int getVersionProperty();	/**	 * Determine whether this entity defines a natural identifier.	 *	 * @return True if the entity defines a natural id; false otherwise.	 */	public boolean hasNaturalIdentifier();	/**	 * If the entity defines a natural id ({@link #hasNaturalIdentifier()}), which	 * properties make up the natural id.	 *	 * @return The indices of the properties making of the natural id; or	 * null, if no natural id is defined.	 */	public int[] getNaturalIdentifierProperties();	/**	 * Retrieve the current state of the natural-id properties from the database.	 *	 * @param id The identifier of the entity for which to retrieve the naturak-id values.	 * @param session The session from which the request originated.	 * @return The natural-id snapshot.	 */	public Object[] getNaturalIdentifierSnapshot(Serializable id, SessionImplementor session);	/**	 * Determine which identifier generation strategy is used for this entity.	 *	 * @return The identifier generation strategy.	 */	public IdentifierGenerator getIdentifierGenerator();	/**	 * Determine whether this entity defines any lazy properties (ala	 * bytecode instrumentation).	 *	 * @return True if the entity has properties mapped as lazy; false otherwise.	 */	public boolean hasLazyProperties();	/**	 * Load an instance of the persistent class.	 */	public Object load(Serializable id, Object optionalObject, LockMode lockMode, SessionImplementor session)	throws HibernateException;	/**	 * Do a version check (optional operation)	 */	public void lock(Serializable id, Object version, Object object, LockMode lockMode, SessionImplementor session)	throws HibernateException;	/**	 * Persist an instance	 */	public void insert(Serializable id, Object[] fields, Object object, SessionImplementor session)	throws HibernateException;	/**	 * Persist an instance, using a natively generated identifier (optional operation)	 */	public Serializable insert(Object[] fields, Object object, SessionImplementor session)	throws HibernateException;	/**	 * Delete a persistent instance	 */	public void delete(Serializable id, Object version, Object object, SessionImplementor session)	throws HibernateException;	/**

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -