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

📄 entitypersister.java

📁 hibernate-3.1.3-all-src.zip 面向对象的访问数据库工具
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
//$Id: EntityPersister.java 8751 2005-12-05 18:45:52Z steveebersole $
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.cache.CacheConcurrencyStrategy;
import org.hibernate.cache.entry.CacheEntryStructure;
import org.hibernate.engine.CascadeStyle;
import org.hibernate.engine.SessionFactoryImplementor;
import org.hibernate.engine.SessionImplementor;
import org.hibernate.id.IdentifierGenerator;
import org.hibernate.metadata.ClassMetadata;
import org.hibernate.type.Type;
import org.hibernate.type.VersionType;

/**
 * Concrete <tt>EntityPersister</tt>s implement mapping and persistence logic for a particular persistent class.
 * <br><br>
 * Implementors must be threadsafe (preferrably immutable) and must provide a constructor
 * of type
 * <tt>(org.hibernate.map.PersistentClass, org.hibernate.impl.SessionFactoryImplementor)</tt>.
 *
 * @author Gavin King
 */
public interface EntityPersister {

	/**
	 * The property name of the "special" identifier property in HQL
	 */
	public static final String ENTITY_ID = "id";

	/**
	 * Finish the initialization of this object, once all <tt>ClassPersisters</tt> have been instantiated.
	 *
	 * Called only once, before any other method.
	 */
	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 class hierarchy are unique.
	 *
	 * A table name, a JNDI URL, etc.
	 */
	public String getRootEntityName();

	/**
	 * The classname of the persistent class (used only for messages)
	 */
	public String getEntityName();
	
	/**
	 * Is the given entity name the name of a subclass, or this class?
	 */
	public boolean isSubclassEntityName(String entityName);

	/**
	 * Returns an array of objects that identify spaces in which properties of this class are persisted,
	 * for instances of this class only.
	 */
	public Serializable[] getPropertySpaces();

	/**
	 * Returns an array of objects that identify spaces in which properties of this class are persisted,
	 * for instances of this class and its subclasses.
	 */
	public Serializable[] getQuerySpaces();

	/**
	 * Does this class support dynamic proxies.
	 */
	public boolean hasProxy();

	/**
	 * Do instances of this class contain collections.
	 */
	public boolean hasCollections();
	
	/**
	 * Does this entity declare any properties of
	 * mutable type?
	 */
	public boolean hasMutableProperties();
	
	/**
	 * Does this entity own any collections which are
	 * fetchable by subselect?
	 */
	public boolean hasSubselectLoadableCollections();

	/**
	 * Does this class declare any cascading save/update/deletes.
	 */
	public boolean hasCascades();

	/**
	 * Are instances of this class mutable.
	 */
	public boolean isMutable();

	/**
	 * Is this class mapped as a subclass of another class?
	 */
	public boolean isInherited();

	/**
	 * Is the identifier assigned before the insert by an <tt>IDGenerator</tt>. Or
	 * is it returned by the <tt>insert()</tt> method? This determines which form
	 * of <tt>insert()</tt> will be called.
	 */
	public boolean isIdentifierAssignedByInsert();

	/**
	 * Get the type of a particular property
	 */
	public Type getPropertyType(String propertyName) throws MappingException;

	/**
	 * Compare two snapshots of the state of an instance to determine if the persistent state
	 * was modified
	 * @return <tt>null</tt> or the indices of the dirty properties
	 */
	public int[] findDirty(Object[] x, Object[] y, Object owner, SessionImplementor session)
	throws HibernateException;

	/**
	 * Compare the state of an instance to the current database state
	 * @return <tt>null</tt> or the indices of the dirty properties
	 */
	public int[] findModified(Object[] old, Object[] current, Object object, SessionImplementor session)
	throws HibernateException;

	/**
	 * Does the class have a property holding the identifier value?
	 */
	public boolean hasIdentifierProperty();
	/**
	 * Do detached instances of this class carry their own identifier value?
	 */
	public boolean hasIdentifierPropertyOrEmbeddedCompositeIdentifier();

	/**
	 * Are instances of this class versioned by a timestamp or version number column.
	 */
	public boolean isVersioned();

	/**
	 * Get the type of versioning (optional operation)
	 */
	public VersionType getVersionType();

	/**
	 * Which property holds the version number (optional operation).
	 */
	public int getVersionProperty();
	
	/**
	 * Does this entity declare a natural id?
	 */
	public boolean hasNaturalIdentifier();

	/**
	 * Which properties hold the natural id?
	 */
	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) throws HibernateException;

	/**
	 * Return the <tt>IdentifierGenerator</tt> for the class
	 */
	public IdentifierGenerator getIdentifierGenerator() throws HibernateException;
	
	/**
	 * Does this entity define some lazy attributes?
	 */
	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;

	/**
	 * Update a persistent instance
	 */
	public void update(
		Serializable id,
		Object[] fields,
		int[] dirtyFields,
		boolean hasDirtyCollection,
		Object[] oldFields,
		Object oldVersion,
		Object object,
		Object rowId,
		SessionImplementor session
	) throws HibernateException;

	/**
	 * Get the Hibernate types of the class properties
	 */
	public Type[] getPropertyTypes();

	/**
	 * Get the names of the class properties - doesn't have to be the names of the
	 * actual Java properties (used for XML generation only)
	 */
	public String[] getPropertyNames();

	/**
	 * Get the "insertability" of the properties of this class
	 * (does the property appear in an SQL INSERT)
	 */
	public boolean[] getPropertyInsertability();

	/**
	 * Which of the properties of this class are database generated values on insert?
	 */
	public boolean[] getPropertyInsertGeneration();

	/**
	 * Which of the properties of this class are database generated values on update?
	 */
	public boolean[] getPropertyUpdateGeneration();

	/**
	 * Get the "updateability" of the properties of this class
	 * (does the property appear in an SQL UPDATE)
	 */
	public boolean[] getPropertyUpdateability();
	
	/**

⌨️ 快捷键说明

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