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

📄 persistentclass.java

📁 介绍了hibernate的入门有一些基本常用的事例
💻 JAVA
字号:
//$Id: PersistentClass.java,v 1.32 2005/04/13 11:43:32 maxcsaucdk Exp $package org.hibernate.mapping;import java.io.Serializable;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.Set;import org.hibernate.MappingException;import org.hibernate.engine.Mapping;import org.hibernate.sql.Alias;import org.hibernate.util.EmptyIterator;import org.hibernate.util.JoinedIterator;import org.hibernate.util.ReflectHelper;import org.hibernate.util.StringHelper;/** * Mapping for an entity. * * @author Gavin King */public abstract class PersistentClass implements Serializable, Filterable, MetaAttributable {	private static final Alias PK_ALIAS = new Alias(15, "PK");	public static final String NULL_DISCRIMINATOR_MAPPING = "null";	public static final String NOT_NULL_DISCRIMINATOR_MAPPING = "not null";	private String entityName;	private String className;	private String proxyInterfaceName;		private String nodeName;	private String discriminatorValue;	private boolean lazy;	private ArrayList properties = new ArrayList();	private final ArrayList subclasses = new ArrayList();	private final ArrayList subclassProperties = new ArrayList();	private final ArrayList subclassTables = new ArrayList();	private boolean dynamicInsert;	private boolean dynamicUpdate;	private int batchSize=-1;	private boolean selectBeforeUpdate;	private int optimisticLockMode;	private java.util.Map metaAttributes;	private ArrayList joins = new ArrayList();	private final ArrayList subclassJoins = new ArrayList();	private final java.util.Map filters = new HashMap();	protected final java.util.Set synchronizedTables = new HashSet();	private String loaderName;	private boolean isAbstract;	private boolean hasSubselectLoadableCollections;	// Custom SQL	private String customSQLInsert;	private String customSQLUpdate;	private String customSQLDelete;	private boolean customInsertCallable;	private boolean customUpdateCallable;	private boolean customDeleteCallable;	public String getClassName() {		return className;	}	public void setClassName(String className) {		this.className = className==null ? null : className.intern();	}	public String getProxyInterfaceName() {		return proxyInterfaceName;	}	public void setProxyInterfaceName(String proxyInterfaceName) {		this.proxyInterfaceName = proxyInterfaceName;	}	public Class getMappedClass() throws MappingException {		try {			return ReflectHelper.classForName(className);		}		catch (ClassNotFoundException cnfe) {			throw new MappingException("entity class not found: " + className, cnfe);		}	}	public Class getProxyInterface() {		if (proxyInterfaceName==null) return null;		try {			return ReflectHelper.classForName(proxyInterfaceName);		}		catch (ClassNotFoundException cnfe) {			return null;		}	}	public boolean useDynamicInsert() {		return dynamicInsert;	}	abstract int nextSubclassId();	public abstract int getSubclassId();		public boolean useDynamicUpdate() {		return dynamicUpdate;	}	public void setDynamicInsert(boolean dynamicInsert) {		this.dynamicInsert = dynamicInsert;	}	public void setDynamicUpdate(boolean dynamicUpdate) {		this.dynamicUpdate = dynamicUpdate;	}	public String getDiscriminatorValue() {		return discriminatorValue;	}	public void addSubclass(Subclass subclass) throws MappingException {		// inheritance cycle detection (paranoid check)		PersistentClass superclass = getSuperclass();		while (superclass!=null) {			if( subclass.getEntityName().equals( superclass.getEntityName() ) ) {				throw new MappingException(					"Circular inheritance mapping detected: " +					subclass.getEntityName() +					" will have it self as superclass when extending " +					getEntityName()				);			}			superclass = superclass.getSuperclass();		}		subclasses.add(subclass);	}	public boolean hasSubclasses() {		return subclasses.size() > 0;	}	public int getSubclassSpan() {		int n = subclasses.size();		Iterator iter = subclasses.iterator();		while ( iter.hasNext() ) {			n += ( (Subclass) iter.next() ).getSubclassSpan();		}		return n;	}	/**	 * Iterate over subclasses in a special 'order', most derived subclasses	 * first.	 */	public Iterator getSubclassIterator() {		Iterator[] iters = new Iterator[ subclasses.size() + 1 ];		Iterator iter = subclasses.iterator();		int i=0;		while ( iter.hasNext() ) {			iters[i++] = ( (Subclass) iter.next() ).getSubclassIterator();		}		iters[i] = subclasses.iterator();		return new JoinedIterator(iters);	}	public Iterator getDirectSubclasses() {		return subclasses.iterator();	}	public void addProperty(Property p) {		properties.add(p);		p.setPersistentClass(this);	}	public abstract Table getTable();	public String getEntityName() {		return entityName;	}	public abstract boolean isMutable();	public abstract boolean hasIdentifierProperty();	public abstract Property getIdentifierProperty();	public abstract KeyValue getIdentifier();	public abstract Property getVersion();	public abstract Value getDiscriminator();	public abstract boolean isInherited();	public abstract boolean isPolymorphic();	public abstract boolean isVersioned();	public abstract String getCacheConcurrencyStrategy();	public abstract PersistentClass getSuperclass();	public abstract boolean isExplicitPolymorphism();	public abstract boolean isDiscriminatorInsertable();	public abstract Iterator getPropertyClosureIterator();	public abstract Iterator getTableClosureIterator();	public abstract Iterator getKeyClosureIterator();	protected void addSubclassProperty(Property prop) {		subclassProperties.add(prop);	}	protected void addSubclassJoin(Join join) {		subclassJoins.add(join);	}	protected void addSubclassTable(Table subclassTable) {		subclassTables.add(subclassTable);	}	public Iterator getSubclassPropertyClosureIterator() {		ArrayList iters = new ArrayList();		iters.add( getPropertyClosureIterator() );		iters.add( subclassProperties.iterator() );		for ( int i=0; i<subclassJoins.size(); i++ ) {			Join join = (Join) subclassJoins.get(i);			iters.add( join.getPropertyIterator() );		}		return new JoinedIterator(iters);	}	public Iterator getSubclassJoinClosureIterator() {		return new JoinedIterator( getJoinClosureIterator(), subclassJoins.iterator() );	}	public Iterator getSubclassTableClosureIterator() {		return new JoinedIterator( getTableClosureIterator(), subclassTables.iterator() );	}	public boolean isClassOrSuperclassJoin(Join join) {		return joins.contains(join);	}	public boolean isClassOrSuperclassTable(Table closureTable) {		return getTable()==closureTable;	}	public boolean isLazy() {		return lazy;	}	public void setLazy(boolean lazy) {		this.lazy = lazy;	}	public abstract boolean hasEmbeddedIdentifier();	public abstract Class getEntityPersisterClass();	public abstract void setEntityPersisterClass(Class classPersisterClass);	public abstract Table getRootTable();	public abstract RootClass getRootClass();	public abstract KeyValue getKey();	public void setDiscriminatorValue(String discriminatorValue) {		this.discriminatorValue = discriminatorValue;	}	public void setEntityName(String entityName) {		this.entityName = entityName==null ? null : entityName.intern();	}	public void createPrimaryKey() {		//Primary key constraint		PrimaryKey pk = new PrimaryKey();		Table table = getTable();		pk.setTable(table);		pk.setName( PK_ALIAS.toAliasString( table.getName() ) );		table.setPrimaryKey(pk);		pk.addColumns( getKey().getColumnIterator() );	}	public abstract String getWhere();	public int getBatchSize() {		return batchSize;	}	public void setBatchSize(int batchSize) {		this.batchSize = batchSize;	}	public boolean hasSelectBeforeUpdate() {		return selectBeforeUpdate;	}	public void setSelectBeforeUpdate(boolean selectBeforeUpdate) {		this.selectBeforeUpdate = selectBeforeUpdate;	}	public Property getProperty(String propertyName) throws MappingException {		Iterator iter = getPropertyClosureIterator();		while ( iter.hasNext() ) {			Property prop = (Property) iter.next();			if ( prop.getName().equals(propertyName) ) return prop;		}		throw new MappingException("property not found: " + propertyName);	}	public int getOptimisticLockMode() {		return optimisticLockMode;	}	public void setOptimisticLockMode(int optimisticLockMode) {		this.optimisticLockMode = optimisticLockMode;	}	public void validate(Mapping mapping) throws MappingException {		Iterator iter = getPropertyIterator();		while ( iter.hasNext() ) {			Property prop = (Property) iter.next();			if ( !prop.isValid(mapping) ) {				throw new MappingException(					"property mapping has wrong number of columns: " +					StringHelper.qualify( getEntityName(), prop.getName() ) +					" type: " +					prop.getType().getName()				);			}		}		checkPropertyDuplication();		checkColumnDuplication();	}		private void checkPropertyDuplication() throws MappingException {		HashSet names = new HashSet();		Iterator iter = getPropertyIterator();		while ( iter.hasNext() ) {			Property prop = (Property) iter.next();			if ( !names.add( prop.getName() ) ) {				throw new MappingException( "duplicate property mapping: " + prop.getName() );			}		}	}	public boolean isDiscriminatorValueNotNull() {		return NOT_NULL_DISCRIMINATOR_MAPPING.equals( getDiscriminatorValue() );	}	public boolean isDiscriminatorValueNull() {		return NULL_DISCRIMINATOR_MAPPING.equals( getDiscriminatorValue() );	}	public java.util.Map getMetaAttributes() {		return metaAttributes;	}	public void setMetaAttributes(java.util.Map metas) {		this.metaAttributes = metas;	}	public MetaAttribute getMetaAttribute(String name) {		return metaAttributes==null?null:(MetaAttribute) metaAttributes.get(name);	}	public String toString() {		return getClass().getName() + '(' + getEntityName() + ')';	}		public Iterator getJoinIterator() {		return joins.iterator();	}	public Iterator getJoinClosureIterator() {		return joins.iterator();	}	public void addJoin(Join join) {		joins.add(join);		join.setPersistentClass(this);	}	public int getJoinClosureSpan() {		return joins.size();	}	public int getPropertyClosureSpan() {		int span = properties.size();		for ( int i=0; i<joins.size(); i++ ) {			Join join = (Join) joins.get(i);			span += join.getPropertySpan();		}		return span;	}	public int getJoinNumber(Property prop) {		int result=1;		Iterator iter = getSubclassJoinClosureIterator();		while ( iter.hasNext() ) {			Join join = (Join) iter.next();			if ( join.containsProperty(prop) ) return result;			result++;		}		return 0;	}	public Iterator getPropertyIterator() {		ArrayList iterators = new ArrayList();		iterators.add( properties.iterator() );		for ( int i=0; i<joins.size(); i++ ) {			Join join = (Join) joins.get(i);			iterators.add( join.getPropertyIterator() );		}		return new JoinedIterator(iterators);	}	public Iterator getUnjoinedPropertyIterator() {		return properties.iterator();	}	public void setCustomSQLInsert(String customSQLInsert, boolean callable) {		this.customSQLInsert = customSQLInsert;		this.customInsertCallable = callable;	}	public String getCustomSQLInsert() {		return customSQLInsert;	}	public boolean isCustomInsertCallable() {		return customInsertCallable;	}	public void setCustomSQLUpdate(String customSQLUpdate, boolean callable) {		this.customSQLUpdate = customSQLUpdate;		this.customUpdateCallable = callable;	}	public String getCustomSQLUpdate() {		return customSQLUpdate;	}	public boolean isCustomUpdateCallable() {		return customUpdateCallable;	}	public void setCustomSQLDelete(String customSQLDelete, boolean callable) {		this.customSQLDelete = customSQLDelete;		this.customDeleteCallable = callable;	}	public String getCustomSQLDelete() {		return customSQLDelete;	}	public boolean isCustomDeleteCallable() {		return customDeleteCallable;	}	public void addFilter(String name, String condition) {		filters.put(name, condition);	}	public java.util.Map getFilterMap() {		return filters;	}	public boolean isForceDiscriminator() {		return false;	}	public abstract boolean isJoinedSubclass();	public String getLoaderName() {		return loaderName;	}	public void setLoaderName(String loaderName) {		this.loaderName = loaderName==null ? null : loaderName.intern();	}	public abstract java.util.Set getSynchronizedTables();		public void addSynchronizedTable(String table) {		synchronizedTables.add(table);	}	public boolean isAbstract() {		return isAbstract;	}	public void setAbstract(boolean isAbstract) {		this.isAbstract = isAbstract;	}	protected void checkColumnDuplication(Set distinctColumns, Iterator columns) 	throws MappingException {		while ( columns.hasNext() ) {			Selectable columnOrFormula = (Selectable) columns.next();			if ( !columnOrFormula.isFormula() ) {				Column col = (Column) columnOrFormula;				if ( !distinctColumns.add( col.getName() ) ) {					throw new MappingException( 							"Repeated column in mapping for entity: " +							getEntityName() +							" column: " +							col.getName() + 							" (should be mapped with insert=\"false\" update=\"false\")"					);				}			}		}	}		protected void checkPropertyColumnDuplication(Set distinctColumns, Iterator properties) 	throws MappingException {		while ( properties.hasNext() ) {			Property prop = (Property) properties.next();			if ( prop.isUpdateable() || prop.isInsertable() ) {				checkColumnDuplication( distinctColumns, prop.getColumnIterator() );			}		}	}		protected Iterator getNonDuplicatedPropertyIterator() {		return getUnjoinedPropertyIterator();	}		protected Iterator getDiscriminatorColumnIterator() {		return EmptyIterator.INSTANCE;	}		protected void checkColumnDuplication() {		HashSet cols = new HashSet();		checkColumnDuplication( cols, getKey().getColumnIterator() );		checkColumnDuplication( cols, getDiscriminatorColumnIterator() );		checkPropertyColumnDuplication( cols, getNonDuplicatedPropertyIterator() );		Iterator iter = getJoinIterator();		while ( iter.hasNext() ) {			cols.clear();			Join join = (Join) iter.next();			checkColumnDuplication( cols, join.getKey().getColumnIterator() );			checkPropertyColumnDuplication( cols, join.getPropertyIterator() );		}	}		public abstract Object accept(PersistentClassVisitor mv);		public String getNodeName() {		return nodeName;	}		public void setNodeName(String nodeName) {		this.nodeName = nodeName;	}		public boolean hasPojoRepresentation() {		return getClassName()!=null;	}	public boolean hasDom4jRepresentation() {		return getNodeName()!=null;	}	public boolean hasSubselectLoadableCollections() {		return hasSubselectLoadableCollections;	}		public void setSubselectLoadableCollections(boolean hasSubselectCollections) {		this.hasSubselectLoadableCollections = hasSubselectCollections;	}	}

⌨️ 快捷键说明

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