
org.nkjmlab.sorm4j.table.Table Maven / Gradle / Ivy
package org.nkjmlab.sorm4j.table;
import org.nkjmlab.sorm4j.Orm;
import org.nkjmlab.sorm4j.OrmConnection;
import org.nkjmlab.sorm4j.Sorm;
import org.nkjmlab.sorm4j.annotation.Experimental;
import org.nkjmlab.sorm4j.common.ConsumerHandler;
import org.nkjmlab.sorm4j.common.FunctionHandler;
import org.nkjmlab.sorm4j.internal.util.Try;
@Experimental
public interface Table extends TableMappedOrm {
/**
* Gets {@link Orm} object
*
* @return
*/
@Override
Sorm getOrm();
/**
* @param
* @param orm
* @param valueType
* @return
*/
static Table create(Sorm orm, Class valueType) {
return new SimpleTable<>(orm, valueType);
}
default TableConnection toTableConnection(OrmConnection conn) {
return TableConnection.of(conn, getValueType(), getTableName());
}
/**
* Open {@link TableOrmConnection}. You should always use try-with-resources
block to
* ensure the database connection is released.
*
* @return
*/
default TableConnection open() {
return TableConnection.of(getOrm().open(), getValueType(), getTableName());
}
/**
* Accepts a {@link OrmConnection} handler for a task with object-relation mapping. The connection
* will be closed after the process of handler.
*
* @param handler
*/
default void acceptHandler(ConsumerHandler> handler) {
try (TableConnection conn = open()) {
handler.accept(conn);
} catch (Exception e) {
throw Try.rethrow(e);
}
}
/**
* Applies a {@link OrmConnection} handler for a task with object-relation mapping and gets the
* result. The connection will be closed after the process of handler.
*
* @param
* @param connectionHandler
* @return
*/
default R applyHandler(FunctionHandler, R> handler) {
try (TableConnection conn = open()) {
return handler.apply(conn);
} catch (Exception e) {
throw Try.rethrow(e);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy