package com.lizard.fastdb.connection;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import javax.transaction.TransactionManager;
/**
* 获取JDBC数据库连接策略接口 <br>
* <br>
* 实现者需要实现这个接口,比如提供的:<tt>ProxoolConnectionProvider</tt><br>
* <br>
* fastDB 通过<tt>ConnectionProvider的实现类提供JDBC连接</tt> <br>
* 注意:实现者需要提供一个默认的(不带参数的)构造方法
*
* @see ConnectionProviderFactory
* @author SHEN.GANG
*/
public interface ConnectionProvider extends Serializable
{
/**
* 根据给定的数据源配置信息初始化数据库连接池
*
* @param prop 数据源配置信息
*/
public void configure(Properties prop);
/**
* 根据数据源名称获取数据库连接
*
* @return 数据库连接
* @throws SQLException
*/
public Connection getConnection() throws SQLException;
/**
* 根据指定的数据源获得该数据源的事务Connection对象,并将其设置给指定的事务管理器管理<br>
* 如果你的数据源不使用事务操作,则该接口可以空实现。
*
* @param tm 事务管理器
* @return 由XAConnection创建的Connection对象
* @throws SQLException
*/
public Connection getXAConnection(TransactionManager tm) throws SQLException;;
/**
* 关闭数据库连接
*
* @param conn 要关闭的连接
* @throws SQLException
*/
public void closeConnection(Connection conn) throws SQLException;
/**
* 销毁数据源
*
* @deprecated 由 {@link #shutdown()} 替代
*/
// @Deprecated
// public void destroy();
/**
* 彻底关闭销毁连接池,并释放里面的所有物理连接
*/
public void shutdown();
/**
* 检查指定名称的数据源是否已经该连接池中注册
*
* @deprecated 无用,废弃
* @param name 数据源名称
* @return true -- 已注册,false -- 未注册
*/
// @Deprecated
// public boolean isDataSourceRegistered(String name);
}