【Java开源代码栏目提醒】:本文主要为网学会员提供Binder.java,希望对需要Binder.java网友有所帮助,学习一下!
//$Id: Binder.java,v 1.26.2.60 2004/01/29 02:11:58 oneovthafew Exp $
package net.sf.hibernate.cfg;
import java.io.Serializable;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Properties;
import net.sf.hibernate.Hibernate;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.MappingException;
import net.sf.hibernate.mapping.IdentifierBag;
import net.sf.hibernate.cache.CacheConcurrencyStrategy;
import net.sf.hibernate.cache.CacheFactory;
import net.sf.hibernate.engine.Cas
cades;
import net.sf.hibernate.engine.Versioning;
import net.sf.hibernate.id.PersistentIdentifierGenerator;
import net.sf.hibernate.loader.OuterJoinLoader;
import net.sf.hibernate.mapping.Any;
import net.sf.hibernate.mapping.Array;
import net.sf.hibernate.mapping.MetaAttribute;
import net.sf.hibernate.mapping.Value;
import net.sf.hibernate.mapping.ToOne;
import net.sf.hibernate.mapping.Bag;
import net.sf.hibernate.mapping.Collection;
import net.sf.hibernate.mapping.Column;
import net.sf.hibernate.mapping.Component;
import net.sf.hibernate.mapping.Fetchable;
import net.sf.hibernate.mapping.Formula;
import net.sf.hibernate.mapping.IdentifierCollection;
import net.sf.hibernate.mapping.IndexedCollection;
import net.sf.hibernate.mapping.List;
import net.sf.hibernate.mapping.ManyToOne;
import net.sf.hibernate.mapping.Map;
import net.sf.hibernate.mapping.NamedSQLQuery;
import net.sf.hibernate.mapping.OneToMany;
import net.sf.hibernate.mapping.OneToOne;
import net.sf.hibernate.mapping.PersistentClass;
import net.sf.hibernate.mapping.PrimitiveArray;
import net.sf.hibernate.mapping.Property;
import net.sf.hibernate.mapping.RootClass;
import net.sf.hibernate.mapping.Set;
import net.sf.hibernate.mapping.Subclass;
import net.sf.hibernate.mapping.Table;
import net.sf.hibernate.mapping.SimpleValue;
import net.sf.hibernate.persister.EntityPersister;
import net.sf.hibernate.persister.NormalizedEntityPersister;
import net.sf.hibernate.property.Getter;
import net.sf.hibernate.property.Setter;
import net.sf.hibernate.type.ComponentType;
import net.sf.hibernate.type.DiscriminatorType;
import net.sf.hibernate.type.DynamicComponentType;
import net.sf.hibernate.type.EntityType;
import net.sf.hibernate.type.ForeignKeyDirection;
import net.sf.hibernate.type.MetaType;
import net.sf.hibernate.type.PrimitiveType;
import net.sf.hibernate.type.Type;
import net.sf.hibernate.type.TypeFactory;
import net.sf.hibernate.util.ReflectHelper;
import net.sf.hibernate.util.StringHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
final class Binder {
private Binder() {}
private static final Log log = LogFactory.getLog(Binder.class);
public static void bindClass(Element node, PersistentClass model, Mappings mapping)
throws MappingException {
//CLASS
String className = getClassName( node.attribute("name"), mapping );
try {
model.setMappedClass( ReflectHelper.classForName(className) );
}
catch ( ClassNotFoundException cnfe ) {
throw new MappingException( "persistent class [" + className + "] not found", cnfe );
}
//PROXY INTERFACE
Attribute proxyNode = node.attribute("proxy");
Attribute lazyNode = node.attribute("lazy");
boolean lazyTrue = lazyNode!=null && "true".equals( lazyNode.getValue() );
if ( proxyNode!=null && ( lazyNode==null || lazyTrue ) ) {
try {
model.setProxyInterface( ReflectHelper.classForName( getClassName(proxyNode, mapping) ) );
}
catch (ClassNotFoundException cnfe) {
throw new MappingException(cnfe);
}
}
if ( proxyNode==null && lazyTrue ) {
model.setProxyInterface( model.getMappedClass() );
}
//DISCRIMINATOR
Attribute discriminatorNode = node.attribute("discriminator-value");
model.setDiscriminatorValue( (discriminatorNode==null) ?
model.getName() :
discriminatorNode.getValue()
);
//DYNAMIC UPDATE
Attribute dynamicNode = node.attribute("dynamic-update");
model.setDynamicUpdate( (dynamicNode==n