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

📄 configuration.java

📁 通过系统把几乎所有与人力资源相关的数据统一管理
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
			}		}		return this;	}		/**	 * Read all mapping documents from a directory tree. Assume that any	 * file named <tt>*.hbm.xml</tt> is a mapping document.	 * @param dir a directory	 */	public Configuration addDirectory(File dir) throws MappingException {		File[] files = dir.listFiles();		for ( int i=0; i<files.length; i++ ) {			if ( files[i].isDirectory() ) {				addDirectory( files[i] );			}			else if ( files[i].getName().endsWith(".hbm.xml") ){				addFile( files[i] );			}		}		return this;	}	private Iterator iterateGenerators(Dialect dialect) throws MappingException {		HashMap generators = new HashMap();		Iterator iter = classes.values().iterator();		while ( iter.hasNext() ) {			IdentifierGenerator ig = ( (PersistentClass) iter.next() ).getIdentifier().createIdentifierGenerator(dialect);			if ( ig instanceof PersistentIdentifierGenerator ) generators.put(				( (PersistentIdentifierGenerator) ig ).generatorKey(), ig			);		}		return generators.values().iterator();	}	/**	 * Generate DDL for dropping tables	 * @see net.sf.hibernate.tool.hbm2ddl.SchemaExport	 */	public String[] generateDropSchemaScript(Dialect dialect) throws HibernateException {		secondPassCompile();		ArrayList script = new ArrayList(50);		if ( dialect.dropConstraints() ) {			Iterator iter = getTableMappings();			while ( iter.hasNext() ) {				Table table = (Table) iter.next();				Iterator subIter = table.getForeignKeyIterator();				while ( subIter.hasNext() ) {					ForeignKey fk = (ForeignKey) subIter.next();					script.add( fk.sqlDropString(dialect) );				}			}		}		Iterator iter = getTableMappings();		while ( iter.hasNext() ) {			Table table = (Table) iter.next();			/*Iterator subIter = table.getIndexIterator();			while ( subIter.hasNext() ) {				Index index = (Index) subIter.next();				if ( !index.isForeignKey() || !dialect.hasImplicitIndexForForeignKey() ) {					script.add( index.sqlDropString(dialect) );				}			}*/			script.add( table.sqlDropString(dialect) );		}		iter = iterateGenerators(dialect);		while ( iter.hasNext() ) {			String dropString = ( (PersistentIdentifierGenerator) iter.next() ).sqlDropString(dialect);			if (dropString!=null) script.add(dropString);		}		return ArrayHelper.toStringArray(script);	}	/**	 * Generate DDL for creating tables	 * @see net.sf.hibernate.tool.hbm2ddl.SchemaExport	 */	public String[] generateSchemaCreationScript(Dialect dialect) throws HibernateException {		secondPassCompile();		ArrayList script = new ArrayList(50);		Iterator iter = getTableMappings();		while ( iter.hasNext() ) {			Table table = (Table) iter.next();			script.add( table.sqlCreateString(dialect, mapping) );		}		iter = getTableMappings();		while ( iter.hasNext() ) {			Table table = (Table) iter.next();			Iterator subIter = table.getIndexIterator();			while ( subIter.hasNext() ) {				Index index = (Index) subIter.next();				script.add( index.sqlCreateString(dialect, mapping) );			}						if ( dialect.hasAlterTable() ) {				subIter = table.getForeignKeyIterator();				while ( subIter.hasNext() ) {					ForeignKey fk = (ForeignKey) subIter.next();					script.add( fk.sqlCreateString(dialect, mapping) );				}			}		}		iter = iterateGenerators(dialect);		while ( iter.hasNext() ) {			String[] lines = ( (PersistentIdentifierGenerator) iter.next() ).sqlCreateStrings(dialect);			for ( int i=0; i<lines.length; i++ ) script.add( lines[i] );		}		return ArrayHelper.toStringArray(script);	}	/**	 * Generate DDL for altering tables	 * @see net.sf.hibernate.tool.hbm2ddl.SchemaUpdate	 */	public String[] generateSchemaUpdateScript(Dialect dialect, DatabaseMetadata databaseMetadata) throws HibernateException {		secondPassCompile();		ArrayList script = new ArrayList(50);		Iterator iter = getTableMappings();		while ( iter.hasNext() ) {			Table table = (Table) iter.next();			TableMetadata tableInfo = databaseMetadata.getTableMetadata( table.getName() );			if (tableInfo==null) {				script.add( table.sqlCreateString(dialect, mapping) );			}			else {				Iterator subiter = table.sqlAlterStrings(dialect, mapping, tableInfo);				while ( subiter.hasNext() ) script.add( subiter.next() );			}		}		iter = getTableMappings();		while ( iter.hasNext() ) {			Table table = (Table) iter.next();			TableMetadata tableInfo = databaseMetadata.getTableMetadata( table.getName() );			Iterator subIter;			if ( dialect.hasAlterTable() ) {				subIter = table.getForeignKeyIterator();				while ( subIter.hasNext() ) {					ForeignKey fk = (ForeignKey) subIter.next();					if ( tableInfo==null || tableInfo.getForeignKeyMetadata( fk.getName() ) == null ) {						script.add( fk.sqlCreateString(dialect, mapping) );					}				}			}						/*//broken, 'cos we don't generate these with names in SchemaExport			subIter = table.getIndexIterator();			while ( subIter.hasNext() ) {				Index index = (Index) subIter.next();				if ( !index.isForeignKey() || !dialect.hasImplicitIndexForForeignKey() ) {					if ( tableInfo==null || tableInfo.getIndexMetadata( index.getName() ) == null ) {						script.add( index.sqlCreateString(dialect, mapping) );					}				}			}			//broken, 'cos we don't generate these with names in SchemaExport			subIter = table.getUniqueKeyIterator();			while ( subIter.hasNext() ) {				UniqueKey uk = (UniqueKey) subIter.next();				if ( tableInfo==null || tableInfo.getIndexMetadata( uk.getName() ) == null ) {					script.add( uk.sqlCreateString(dialect, mapping) );				}			}*/		}		iter = iterateGenerators(dialect);		while ( iter.hasNext() ) {			PersistentIdentifierGenerator generator = (PersistentIdentifierGenerator) iter.next();			Object key = generator.generatorKey();			if ( !databaseMetadata.isSequence(key) && !databaseMetadata.isTable(key) ) {				String[] lines = generator.sqlCreateStrings(dialect);				for (int i = 0; i < lines.length; i++) script.add( lines[i] );			}		}		return ArrayHelper.toStringArray(script);	}		private void validate() throws MappingException {		Iterator iter = classes.values().iterator();		while ( iter.hasNext() ) ( (PersistentClass) iter.next() ).validate(mapping);		iter = collections.values().iterator();		while ( iter.hasNext() ) ( (Collection) iter.next() ).validate(mapping);	}	// This method may be called many times!!	private void secondPassCompile() throws MappingException {		log.info("processing one-to-many association mappings");		Iterator iter = secondPasses.iterator();		while ( iter.hasNext() ) {			Binder.SecondPass sp = (Binder.SecondPass) iter.next();			sp.doSecondPass(classes);			iter.remove();		}				log.info("processing one-to-one association property references");				iter = propertyReferences.iterator();		while ( iter.hasNext() ) {			Mappings.UniquePropertyReference upr = (Mappings.UniquePropertyReference) iter.next();			PersistentClass clazz = getClassMapping(upr.referencedClass);			if (clazz==null) throw new MappingException( "property-ref to unmapped class: " + upr.referencedClass.getName() );			boolean found = false;			Iterator propIter = clazz.getPropertyIterator();			while ( propIter.hasNext() ) {				Property prop = (Property) propIter.next();				if ( upr.propertyName.equals( prop.getName() ) ) {					( (SimpleValue) prop.getValue() ).setUnique(true);					found = true;					break;				}			}			if (!found) throw new MappingException( 				"property-ref not found: " + upr.propertyName + 				" in class: " + upr.referencedClass.getName() 			);		}				//TODO: Somehow add the newly created foreign keys to the internal collection		log.info("processing foreign key constraints");		iter = getTableMappings();		while ( iter.hasNext() ) {			Table table = (Table) iter.next();			Iterator subIter = table.getForeignKeyIterator();			while ( subIter.hasNext() ) {				ForeignKey fk = (ForeignKey) subIter.next();				if ( fk.getReferencedTable() == null ) {					if ( log.isDebugEnabled() ) log.debug(						"resolving reference to class: " + fk.getReferencedClass().getName()					);					PersistentClass referencedClass = (PersistentClass) classes.get( fk.getReferencedClass() );					if (referencedClass == null) throw new MappingException(						"An association from the table " +						fk.getTable().getName() +						" refers to an unmapped class: " +						fk.getReferencedClass().getName()					);					fk.setReferencedTable( referencedClass.getTable() );				}			}		}	}	/**	 * Get the named queries	 */	public Map getNamedQueries() {		return namedQueries;	}	private static final Interceptor EMPTY_INTERCEPTOR = new EmptyInterceptor();	static final class EmptyInterceptor implements Interceptor, Serializable {		/**		 * @see net.sf.hibernate.Interceptor#onDelete(Object, Serializable id, Object[], String[], Type[])		 */		public void onDelete(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) {		}		/**		 * @see net.sf.hibernate.Interceptor#onFlushDirty(Object, Serializable, Object[], Object[], String[], Type[])		 */		public boolean onFlushDirty(Object entity, Serializable id, Object[] currentState, Object[] previousState, String[] propertyNames, Type[] types) {			return false;		}		/**		 * @see net.sf.hibernate.Interceptor#onLoad(Object, Serializable, Object[], String[], Type[])		 */		public boolean onLoad(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) {			return false;		}		/**		 * @see net.sf.hibernate.Interceptor#onSave(Object, Serializable, Object[], String[], Type[])		 */		public boolean onSave(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) {			return false;		}		/**		 * @see net.sf.hibernate.Interceptor#postFlush(Iterator)		 */		public void postFlush(Iterator entities) {		}		/**		 * @see net.sf.hibernate.Interceptor#preFlush(Iterator)		 */		public void preFlush(Iterator entities) {		}		/**		 * @see net.sf.hibernate.Interceptor#isUnsaved(java.lang.Object)		 */		public Boolean isUnsaved(Object entity) {			return null;		}		/**		 * @see net.sf.hibernate.Interceptor#instantiate(java.lang.Class, java.io.Serializable)		 */		public Object instantiate(Class clazz, Serializable id) {			return null;		}		/**		 * @see net.sf.hibernate.Interceptor#findDirty(Object, Serializable, Object[], Object[], String[], Type[])		 */		public int[] findDirty(			Object entity,			Serializable id,			Object[] currentState,			Object[] previousState,			String[] propertyNames,			Type[] types) {			return null;		}	}	/**	 * Instantiate a new <tt>SessionFactory</tt>, using the properties and	 * mappings in this configuration. The <tt>SessionFactory</tt> will be	 * immutable, so changes made to the <tt>Configuration</tt> after	 * building the <tt>SessionFactory</tt> will not affect it.	 *	 * @see net.sf.hibernate.SessionFactory	 * @return a new factory for <tt>Session</tt>s	 */	public SessionFactory buildSessionFactory() throws HibernateException {		secondPassCompile();		validate();		Environment.verifyProperties(properties);		Properties copy = new Properties();		copy.putAll(properties);		Settings settings = buildSettings();		configureCaches(settings);		return new SessionFactoryImpl(this, settings);	}	/**	 * Return the configured <tt>Interceptor</tt>	 */	public Interceptor getInterceptor() {		return interceptor;	}	/**	 * Get all properties	 */	public Properties getProperties() {		return properties;	}

⌨️ 快捷键说明

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