package io.trygvis.persistence.sql; import javax.sql.DataSource; import java.sql.Connection; import java.sql.SQLException; public abstract class SqlSessionFactory { private final SqlUnit unit; private final DataSource ds; public SqlSessionFactory(SqlUnit unit, DataSource ds) { this.unit = unit; this.ds = ds; } public SqlUnit getUnit() { return unit; } public T newSession() throws SQLException { Connection c = ds.getConnection(); return newSession(c); } protected abstract T newSession(Connection c); }