package jef.database.innerpool;
import java.sql.Connection;
import java.sql.SQLException;
/**
* 这是真正在JEF内部所使用的数据库连接对象。 IConnection对象 当使用事务处理时,每个事务对象都被分配到一个IConnection。
* 当处理非事务任务时,每个线程都得到一个IConnection。 无论哪种情况ConnectionInPool都由
* {@link IConnectionPool}对象给出。
* <p>
*
* @author Administrator
*/
public interface IConnection extends Connection {
/**
* (物理上)关闭连接
*
*
* 正常情况下,连接有close方法。但对于连接池中的连接,close方法意味着释放而不是关闭。
*
*
* 而出现一个问题,就是连接池在管理连接的时候,需要关闭连接怎么办?所以增加此方法。 此方法只用于连接池管理连接时使用,不允许在其他场合使用。
*/
void closePhysical();
/**
* 确认连接有效,在每次获取连接时执行,因此不可能执行开销太大的方法
*
* @throws SQLException
*/
void ensureOpen() throws SQLException;
/**
* 设置连接要从哪个数据源获取,当多数据源时,连接是有状态的。通过这个方法设置连接的状态
*
* @param key
* @return
*/
void setKey(String key);
/**
* 释放回连接池
*/
void close();
}