
com.jpattern.orm.datasource.DataSourceSessionProvider Maven / Gradle / Ivy
package com.jpattern.orm.datasource;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.jpattern.logger.ILogger;
import com.jpattern.orm.logger.OrmLogger;
import com.jpattern.orm.mapper.DBTableMapBuilder;
import com.jpattern.orm.mapper.ITableMap;
import com.jpattern.orm.session.ISessionProvider;
import com.jpattern.orm.session.ISessionStrategy;
/**
*
* @author Francesco Cina
*
* 21/mag/2011
*/
public class DataSourceSessionProvider implements ISessionProvider {
private final ThreadLocal threadLocalConnection = new ThreadLocal();
private final DataSource dataSource;
private final ILogger logger = OrmLogger.getOrmLogger(getClass());
public DataSourceSessionProvider(DataSource dataSource) {
this.dataSource = dataSource;
}
@Override
public ISessionStrategy getSessionStrategy() {
return new DataSourceSessionStrategy(this);
}
@Override
public void updateTableMap(ITableMap tableMap, boolean enableDBScan) throws SQLException {
new DBTableMapBuilder(dataSource, tableMap , enableDBScan).updateTableMap();
}
final IConnection getConnection(boolean readOnly, IConnectionCaller connectionCaller) {
logger.debug("getConnection", "new connection asked by " + connectionCaller );
IConnection conn = threadLocalConnection.get();
if (conn==null || !conn.isValid()) {
logger.info("getConnection", "no valid connections found, a new one will be created");
conn = new Connection(dataSource, readOnly);
threadLocalConnection.set(conn);
}
conn.addCaller(connectionCaller);
return conn;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy