All Downloads are FREE. Search and download functionalities are using the official Maven repository.

me.zzp.ar.pool.SingletonDataSource Maven / Gradle / Ivy

package me.zzp.ar.pool;

import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.SQLFeatureNotSupportedException;
import java.util.Properties;
import java.util.logging.Logger;
import javax.sql.DataSource;

/**
 * 

jActiveRecord默认DataSource实现,永远只返回同一个数据库连接。 * 因此,内存型的数据库也能正常工作。

* * @since 2.0 * @author redraiment */ public final class SingletonDataSource implements DataSource { private final Connection instance; /** * 提供连接数据库基本信息。 * * @param url 数据库连接地址 * @param info 包含用户名、密码等登入信息。 * @throws java.sql.SQLException 连接数据库失败 */ public SingletonDataSource(String url, Properties info) throws SQLException { final Connection c = DriverManager.getConnection(url, info); Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { try { c.close(); } catch (SQLException e) { throw new RuntimeException("close database fail"); } } }); instance = new SingletonConnection(c); } /** * 每次调用时均返回一个新的数据库连接。 * * @return 一个新的数据库连接。 * @throws SQLException 连接数据库失败。 */ @Override public Connection getConnection() throws SQLException { return instance; } /** * 每次调用时均返回一个新的数据库连接。 * * @return 一个新的数据库连接。 * @throws SQLException 连接数据库失败。 */ @Override public Connection getConnection(String username, String password) throws SQLException { return instance; } /** * 不支持,永远不会被调用。 * * @return 无 * @throws SQLException 从不 */ @Override public PrintWriter getLogWriter() throws SQLException { throw new UnsupportedOperationException("Not supported yet."); } /** * 不支持,永远不会被调用。 * * @throws SQLException 从不 */ @Override public void setLogWriter(PrintWriter out) throws SQLException { throw new UnsupportedOperationException("Not supported yet."); } /** * 不支持,永远不会被调用。 * * @throws SQLException 从不 */ @Override public void setLoginTimeout(int seconds) throws SQLException { throw new UnsupportedOperationException("Not supported yet."); } /** * 不支持,永远不会被调用。 * * @return 无 * @throws SQLException 从不 */ @Override public int getLoginTimeout() throws SQLException { throw new UnsupportedOperationException("Not supported yet."); } /** * 不支持,永远不会被调用。 * * @return 无 * @throws SQLFeatureNotSupportedException 从不 */ @Override public Logger getParentLogger() throws SQLFeatureNotSupportedException { throw new UnsupportedOperationException("Not supported yet."); } /** * 不支持,永远不会被调用。 * * @param 类型 * @return 无 * @throws SQLException 从不 */ @Override public T unwrap(Class iface) throws SQLException { throw new UnsupportedOperationException("Not supported yet."); } /** * 不支持,永远不会被调用。 * * @return 无 * @throws SQLException 从不 */ @Override public boolean isWrapperFor(Class iface) throws SQLException { throw new UnsupportedOperationException("Not supported yet."); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy