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

📄 abstractbatcher.java

📁 一个Java持久层类库
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
				log.warn("Could not close a JDBC prepared statement", sqle);			}			batchUpdate=null;			batchUpdateSQL=null;			Iterator iter = resultSetsToClose.iterator();			while ( iter.hasNext() ) {				try {					logCloseResults();					( (ResultSet) iter.next() ).close();				}				catch (SQLException e) {					// no big deal					log.warn("Could not close a JDBC result set", e);				}				catch (Throwable e) {					// sybase driver (jConnect) throwing NPE here in certain cases					log.warn("Could not close a JDBC result set", e);				}			}			resultSetsToClose.clear();			iter = statementsToClose.iterator();			while ( iter.hasNext() ) {				try {					closeQueryStatement( (PreparedStatement) iter.next() );				}				catch (SQLException e) {					// no big deal					log.warn("Could not close a JDBC statement", e);				}			}			statementsToClose.clear();		}		finally {			releasing = false;		}	}	protected abstract void doExecuteBatch(PreparedStatement ps) throws SQLException, HibernateException;	private String preparedStatementCountsToString() {		return				" (open PreparedStatements: " +				openPreparedStatementCount +				", globally: " +				globalOpenPreparedStatementCount +				")";	}	private String resultSetCountsToString() {		return				" (open ResultSets: " +				openResultSetCount +				", globally: " +				globalOpenResultSetCount +				")";	}	private void logOpenPreparedStatement() {		if ( log.isDebugEnabled() ) {			log.debug( "about to open PreparedStatement" + preparedStatementCountsToString() );			openPreparedStatementCount++;			globalOpenPreparedStatementCount++;		}	}	private void logClosePreparedStatement() {		if ( log.isDebugEnabled() ) {			log.debug( "about to close PreparedStatement" + preparedStatementCountsToString() );			openPreparedStatementCount--;			globalOpenPreparedStatementCount--;		}	}	private void logOpenResults() {		if ( log.isDebugEnabled() ) {			log.debug( "about to open ResultSet" + resultSetCountsToString() );			openResultSetCount++;			globalOpenResultSetCount++;		}	}	private void logCloseResults() {		if ( log.isDebugEnabled() ) {			log.debug( "about to close ResultSet" + resultSetCountsToString() );			openResultSetCount--;			globalOpenResultSetCount--;		}	}	protected SessionFactoryImplementor getFactory() {		return factory;	}	private void log(String sql) {		factory.getSettings().getSqlStatementLogger().logStatement( sql, FormatStyle.BASIC );	}	private PreparedStatement getPreparedStatement(			final Connection conn,	        final String sql,	        final boolean scrollable,	        final ScrollMode scrollMode) throws SQLException {		return getPreparedStatement(				conn,		        sql,		        scrollable,		        false,		        null,		        scrollMode,		        false		);	}	private CallableStatement getCallableStatement(			final Connection conn,	        String sql,	        boolean scrollable) throws SQLException {		if ( scrollable && !factory.getSettings().isScrollableResultSetsEnabled() ) {			throw new AssertionFailure("scrollable result sets are not enabled");		}		sql = getSQL( sql );		log( sql );		log.trace("preparing callable statement");		if ( scrollable ) {			return conn.prepareCall(					sql,			        ResultSet.TYPE_SCROLL_INSENSITIVE,			        ResultSet.CONCUR_READ_ONLY			);		}		else {			return conn.prepareCall( sql );		}	}	private String getSQL(String sql) {		sql = interceptor.onPrepareStatement( sql );		if ( sql==null || sql.length() == 0 ) {			throw new AssertionFailure( "Interceptor.onPrepareStatement() returned null or empty string." );		}		return sql;	}	private PreparedStatement getPreparedStatement(			final Connection conn,	        String sql,	        boolean scrollable,	        final boolean useGetGeneratedKeys,	        final String[] namedGeneratedKeys,	        final ScrollMode scrollMode,	        final boolean callable) throws SQLException {		if ( scrollable && !factory.getSettings().isScrollableResultSetsEnabled() ) {			throw new AssertionFailure("scrollable result sets are not enabled");		}		if ( useGetGeneratedKeys && !factory.getSettings().isGetGeneratedKeysEnabled() ) {			throw new AssertionFailure("getGeneratedKeys() support is not enabled");		}		sql = getSQL( sql );		log( sql );		log.trace( "preparing statement" );		PreparedStatement result;		if ( scrollable ) {			if ( callable ) {				result = conn.prepareCall( sql, scrollMode.toResultSetType(), ResultSet.CONCUR_READ_ONLY );			}			else {				result = conn.prepareStatement( sql, scrollMode.toResultSetType(), ResultSet.CONCUR_READ_ONLY );			}		}		else if ( useGetGeneratedKeys ) {			result = conn.prepareStatement( sql, PreparedStatement.RETURN_GENERATED_KEYS );		}		else if ( namedGeneratedKeys != null ) {			result = conn.prepareStatement( sql, namedGeneratedKeys );		}		else {			if ( callable ) {				result = conn.prepareCall( sql );			}			else {				result = conn.prepareStatement( sql );			}		}		setTimeout( result );		if ( factory.getStatistics().isStatisticsEnabled() ) {			factory.getStatisticsImplementor().prepareStatement();		}		return result;	}	private void setTimeout(PreparedStatement result) throws SQLException {		if ( isTransactionTimeoutSet ) {			int timeout = (int) ( transactionTimeout - ( System.currentTimeMillis() / 1000 ) );			if (timeout<=0) {				throw new TransactionException("transaction timeout expired");			}			else {				result.setQueryTimeout(timeout);			}		}	}	private void closePreparedStatement(PreparedStatement ps) throws SQLException {		try {			log.trace("closing statement");			ps.close();			if ( factory.getStatistics().isStatisticsEnabled() ) {				factory.getStatisticsImplementor().closeStatement();			}		}		finally {			if ( !releasing ) {				// If we are in the process of releasing, no sense				// checking for aggressive-release possibility.				connectionManager.afterStatement();			}		}	}	private void setStatementFetchSize(PreparedStatement statement) throws SQLException {		Integer statementFetchSize = factory.getSettings().getJdbcFetchSize();		if ( statementFetchSize!=null ) {			statement.setFetchSize( statementFetchSize.intValue() );		}	}	public Connection openConnection() throws HibernateException {		log.debug("opening JDBC connection");		try {			return factory.getConnectionProvider().getConnection();		}		catch (SQLException sqle) {			throw JDBCExceptionHelper.convert(					factory.getSQLExceptionConverter(),			        sqle,			        "Cannot open connection"				);		}	}	public void closeConnection(Connection conn) throws HibernateException {		if ( log.isDebugEnabled() ) {			log.debug(					"closing JDBC connection" +					preparedStatementCountsToString() +					resultSetCountsToString()				);		}		try {			if ( !conn.isClosed() ) {				JDBCExceptionReporter.logAndClearWarnings(conn);			}			factory.getConnectionProvider().closeConnection(conn);		}		catch (SQLException sqle) {			throw JDBCExceptionHelper.convert(					factory.getSQLExceptionConverter(),			        sqle,			        "Cannot close connection"				);		}	}	public void cancelLastQuery() throws HibernateException {		try {			if (lastQuery!=null) lastQuery.cancel();		}		catch (SQLException sqle) {			throw JDBCExceptionHelper.convert(					factory.getSQLExceptionConverter(),			        sqle,			        "Cannot cancel query"				);		}	}	public boolean hasOpenResources() {		return resultSetsToClose.size() > 0 || statementsToClose.size() > 0;	}	public String openResourceStatsAsString() {		return preparedStatementCountsToString() + resultSetCountsToString();	}}

⌨️ 快捷键说明

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