package io.ebeaninternal.server.transaction; import javax.sql.DataSource; import java.sql.Connection; import java.sql.SQLException; /** * Supply the DataSource to the transaction manager. * <p> * Implementations can support multi-tenancy via DB or SCHEMA. * </p> */ public interface DataSourceSupplier { /** * Return the DataSource to use for the current request. * <p> * This should take into account multi-tenancy and the current tenantId. * </p> */ DataSource getDataSource(); /** * Return a connection from the DataSource taking into account a tenantId for multi-tenant lazy loading. * * @param tenantId Most often null but well supplied indicates a multi-tenant lazy loading query * @return the connection to use */ Connection getConnection(Object tenantId) throws SQLException; /** * Shutdown the datasource de-registering the JDBC driver if requested. */ void shutdown(boolean deregisterDriver); }