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

📄 statisticsimpl.java

📁 一个Java持久层类库
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
//$Id: StatisticsImpl.java 11398 2007-04-10 14:54:07Z steve.ebersole@jboss.com $package org.hibernate.stat;import java.util.HashMap;import java.util.Map;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.hibernate.cache.Cache;import org.hibernate.cache.Region;import org.hibernate.engine.SessionFactoryImplementor;import org.hibernate.util.ArrayHelper;/** * @see org.hibernate.stat.Statistics  *   * @author Gavin King */public class StatisticsImpl implements Statistics, StatisticsImplementor {		//TODO: we should provide some way to get keys of collection of statistics to make it easier to retrieve from a GUI perspective		private static final Logger log = LoggerFactory.getLogger(StatisticsImpl.class);	private SessionFactoryImplementor sessionFactory;	private boolean isStatisticsEnabled;	private long startTime;	private long sessionOpenCount;	private long sessionCloseCount;	private long flushCount;	private long connectCount;		private long prepareStatementCount;	private long closeStatementCount;		private long entityLoadCount;	private long entityUpdateCount;	private long entityInsertCount;	private long entityDeleteCount;	private long entityFetchCount;	private long collectionLoadCount;	private long collectionUpdateCount;	private long collectionRemoveCount;	private long collectionRecreateCount;	private long collectionFetchCount;		private long secondLevelCacheHitCount;	private long secondLevelCacheMissCount;	private long secondLevelCachePutCount;		private long queryExecutionCount;	private long queryExecutionMaxTime;	private String queryExecutionMaxTimeQueryString;	private long queryCacheHitCount;	private long queryCacheMissCount;	private long queryCachePutCount;		private long commitedTransactionCount;	private long transactionCount;		private long optimisticFailureCount;		/** second level cache statistics per region */	private final Map secondLevelCacheStatistics = new HashMap();	/** entity statistics per name */	private final Map entityStatistics = new HashMap();	/** collection statistics per name */	private final Map collectionStatistics = new HashMap();	/** entity statistics per query string (HQL or SQL) */	private final Map queryStatistics = new HashMap();	public StatisticsImpl() {		clear();	}	public StatisticsImpl(SessionFactoryImplementor sessionFactory) {		clear();		this.sessionFactory = sessionFactory;	}		/**	 * reset all statistics	 */	public synchronized void clear() {		secondLevelCacheHitCount = 0;		secondLevelCacheMissCount = 0;		secondLevelCachePutCount = 0;				sessionCloseCount = 0;		sessionOpenCount = 0;		flushCount = 0;		connectCount = 0;				prepareStatementCount = 0;		closeStatementCount = 0;				entityDeleteCount = 0;		entityInsertCount = 0;		entityUpdateCount = 0;		entityLoadCount = 0;		entityFetchCount = 0;				collectionRemoveCount = 0;		collectionUpdateCount = 0;		collectionRecreateCount = 0;		collectionLoadCount = 0;		collectionFetchCount = 0;				queryExecutionCount = 0;		queryCacheHitCount = 0;		queryExecutionMaxTime = 0;		queryExecutionMaxTimeQueryString = null;		queryCacheMissCount = 0;		queryCachePutCount = 0;				transactionCount = 0;		commitedTransactionCount = 0;				optimisticFailureCount = 0;				secondLevelCacheStatistics.clear();		entityStatistics.clear();		collectionStatistics.clear();		queryStatistics.clear();				startTime = System.currentTimeMillis();	}		public synchronized void openSession() {		sessionOpenCount++;	}		public synchronized void closeSession() {		sessionCloseCount++;	}		public synchronized void flush() {		flushCount++;	}		public synchronized void connect() {		connectCount++;	}		public synchronized void loadEntity(String entityName) {		entityLoadCount++;		getEntityStatistics(entityName).loadCount++;	}	public synchronized void fetchEntity(String entityName) {		entityFetchCount++;		getEntityStatistics(entityName).fetchCount++;	}	/**	 * find entity statistics per name	 * 	 * @param entityName entity name	 * @return EntityStatistics object	 */	public synchronized EntityStatistics getEntityStatistics(String entityName) {		EntityStatistics es = (EntityStatistics) entityStatistics.get(entityName);		if (es==null) {			es = new EntityStatistics(entityName);			entityStatistics.put(entityName, es);		}		return es;	}		public synchronized void updateEntity(String entityName) {		entityUpdateCount++;		EntityStatistics es = getEntityStatistics(entityName);		es.updateCount++;	}	public synchronized void insertEntity(String entityName) {		entityInsertCount++;		EntityStatistics es = getEntityStatistics(entityName);		es.insertCount++;	}	public synchronized void deleteEntity(String entityName) {		entityDeleteCount++;		EntityStatistics es = getEntityStatistics(entityName);		es.deleteCount++;	}	/**	 * Get collection statistics per role	 * 	 * @param role collection role	 * @return CollectionStatistics	 */	public synchronized CollectionStatistics getCollectionStatistics(String role) {		CollectionStatistics cs = (CollectionStatistics) collectionStatistics.get(role);		if (cs==null) {			cs = new CollectionStatistics(role);			collectionStatistics.put(role, cs);		}		return cs;	}		public synchronized void loadCollection(String role) {		collectionLoadCount++;		getCollectionStatistics(role).loadCount++;	}	public synchronized void fetchCollection(String role) {		collectionFetchCount++;		getCollectionStatistics(role).fetchCount++;	}	public synchronized void updateCollection(String role) {		collectionUpdateCount++;		getCollectionStatistics(role).updateCount++;	}	public synchronized void recreateCollection(String role) {		collectionRecreateCount++;		getCollectionStatistics(role).recreateCount++;	}	public synchronized void removeCollection(String role) {		collectionRemoveCount++;		getCollectionStatistics(role).removeCount++;	}		/**	 * Second level cache statistics per region	 * 	 * @param regionName region name	 * @return SecondLevelCacheStatistics	 */	public synchronized SecondLevelCacheStatistics getSecondLevelCacheStatistics(String regionName) {		SecondLevelCacheStatistics slcs = ( SecondLevelCacheStatistics ) secondLevelCacheStatistics.get( regionName );		if ( slcs == null ) {			if ( sessionFactory == null ) {				return null;			}			Region region = sessionFactory.getSecondLevelCacheRegion( regionName );			if ( region == null ) {				return null;			}			slcs = new SecondLevelCacheStatistics( region );			secondLevelCacheStatistics.put( regionName, slcs );		}		return slcs;	}	public synchronized void secondLevelCachePut(String regionName) {		secondLevelCachePutCount++;		getSecondLevelCacheStatistics(regionName).putCount++;	}	public synchronized void secondLevelCacheHit(String regionName) {		secondLevelCacheHitCount++;		getSecondLevelCacheStatistics(regionName).hitCount++;	}	public synchronized void secondLevelCacheMiss(String regionName) {		secondLevelCacheMissCount++;		getSecondLevelCacheStatistics(regionName).missCount++;	}	public synchronized void queryExecuted(String hql, int rows, long time) {		queryExecutionCount++;		if (queryExecutionMaxTime<time) {			queryExecutionMaxTime=time;			queryExecutionMaxTimeQueryString = hql;		}		if (hql!=null) {			QueryStatistics qs = getQueryStatistics(hql);			qs.executed(rows, time);		}	}		public synchronized void queryCacheHit(String hql, String regionName) {		queryCacheHitCount++;		if (hql!=null) {			QueryStatistics qs = getQueryStatistics(hql);			qs.cacheHitCount++;		}		SecondLevelCacheStatistics slcs = getSecondLevelCacheStatistics(regionName);		slcs.hitCount++;	}	public synchronized void queryCacheMiss(String hql, String regionName) {		queryCacheMissCount++;		if (hql!=null) {			QueryStatistics qs = getQueryStatistics(hql);			qs.cacheMissCount++;		}		SecondLevelCacheStatistics slcs = getSecondLevelCacheStatistics(regionName);		slcs.missCount++;	}	public synchronized void queryCachePut(String hql, String regionName) {		queryCachePutCount++;		if (hql!=null) {			QueryStatistics qs = getQueryStatistics(hql);			qs.cachePutCount++;		}		SecondLevelCacheStatistics slcs = getSecondLevelCacheStatistics(regionName);		slcs.putCount++;	}	/**	 * Query statistics from query string (HQL or SQL)	 * 	 * @param queryString query string	 * @return QueryStatistics	 */	public synchronized QueryStatistics getQueryStatistics(String queryString) {		QueryStatistics qs = (QueryStatistics) queryStatistics.get(queryString);		if (qs==null) {			qs = new QueryStatistics(queryString);			queryStatistics.put(queryString, qs);		}		return qs;	}

⌨️ 快捷键说明

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