
com.jpattern.orm.session.jdbctemplate.JdbcTemplateSessionProvider Maven / Gradle / Ivy
The newest version!
package com.jpattern.orm.session.jdbctemplate;
import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.transaction.PlatformTransactionManager;
import com.jpattern.orm.exception.OrmException;
import com.jpattern.orm.session.SessionProvider;
import com.jpattern.orm.session.SqlPerformerStrategy;
import com.jpattern.orm.transaction.Transaction;
import com.jpattern.orm.transaction.TransactionDefinition;
/**
*
* @author Francesco Cina
*
* 15/giu/2011
*/
public class JdbcTemplateSessionProvider extends SessionProvider {
private final ThreadLocal threadLocalJdbcTemplate = new ThreadLocal();
private final DataSource dataSource;
private final SqlPerformerStrategy performerStrategy;
private final PlatformTransactionManager platformTransactionManager;
public JdbcTemplateSessionProvider(final DataSource dataSource, final PlatformTransactionManager platformTransactionManager) {
this.dataSource = dataSource;
this.platformTransactionManager = platformTransactionManager;
performerStrategy = new JdbcTemplateSqlPerformerStrategy( this );
}
@Override
public DataSource getDataSource() {
return dataSource;
}
public JdbcTemplate getJdbcTemplate() {
getLogger().trace("Connection asked."); //$NON-NLS-1$
JdbcTemplate conn = threadLocalJdbcTemplate.get();
if (conn==null) {
getLogger().trace("No valid connections found, a new one will be created"); //$NON-NLS-1$
conn = new JdbcTemplate(dataSource);
threadLocalJdbcTemplate.set(conn);
}
return conn;
}
@Override
public Transaction getTransaction(final TransactionDefinition transactionDefinition) throws OrmException {
try {
return new JdbcTemplateTransaction(platformTransactionManager, transactionDefinition);
} catch (Exception e) {
throw new OrmException(e);
}
}
@Override
public SqlPerformerStrategy sqlPerformerStrategy() throws OrmException {
return performerStrategy;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy