interface SessionFactory {
void inTransaction(Consumer<Session> action);
void inSession(Consumer<Session> action);
}
interface Session ... {
void inTransaction(Consumer<Session> action);
<T> T inTransaction(Function<Session,T> action);
void inJdbc(Consumer<Connection> action);
<T> T inJdbc(Function<Session,T> action);
}