Skip to content

Commit

Permalink
Merge pull request #15 from yuu-nkjm/develop
Browse files Browse the repository at this point in the history
Modify sorm api
  • Loading branch information
yuu-nkjm authored Mar 11, 2021
2 parents ef5c378 + 02e9673 commit c2e997c
Show file tree
Hide file tree
Showing 89 changed files with 945 additions and 2,505 deletions.
10 changes: 1 addition & 9 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.nkjmlab</groupId>
<artifactId>sorm4j</artifactId>
<version>1.0.0-rc2</version>
<version>1.0.0-rc3</version>
<name>sorm4j</name>
<description>Simple micro Object-Relation Mapper for Java</description>
<url>https://github.com/yuu-nkjm/sorm4j</url>
Expand Down Expand Up @@ -135,14 +135,6 @@
<version>3.8.0</version>
<scope>test</scope>
</dependency>

<!-- https://mvnrepository.com/artifact/com.jamonapi/jamon -->
<dependency>
<groupId>com.jamonapi</groupId>
<artifactId>jamon</artifactId>
<version>2.82</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
Expand Down
9 changes: 0 additions & 9 deletions src/main/java/org/nkjmlab/sorm4j/OrmException.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,12 @@ public final class OrmException extends RuntimeException {

private static final long serialVersionUID = -3645955311944195665L;

public OrmException(Throwable cause) {
super(cause);
}

public OrmException(String message) {
super(message);
}

public OrmException(String message, Throwable cause) {
super(message, cause);
}

public static OrmException wrapIfNotOrmException(Throwable e) {
return e instanceof OrmException ? (OrmException) e : new OrmException(e);
}

}

53 changes: 41 additions & 12 deletions src/main/java/org/nkjmlab/sorm4j/OrmMapReader.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,20 @@
*
*/
public interface OrmMapReader {
Map<String, Object> readMapOne(SqlStatement sql);
/**
* See {@link OrmMapReader#readMapFirst(String, Object...)}
*
* @param sql
* @return
*/
Map<String, Object> readMapFirst(SqlStatement sql);

/**
* Reads a first row from the database by mapping the results of the SQL query into an instance of
* {@link java.util.Map}.
* <p>
* Types returned from the database will be converted to Java types in the map according with the
* correspondence defined in {@link ResultSetConverter#getValueBySqlType(ResultSet, int, int)}.
* correspondence defined in {@link ResultSetConverter#toSingleMap(ResultSet, List, List)}.
* <p>
* Parameters will be set according with the correspondence defined in
* {@link SqlParameterSetter#setParameters(PreparedStatement, Object... )}
Expand All @@ -33,38 +39,61 @@ public interface OrmMapReader {

Map<String, Object> readMapFirst(String sql, Object... parameters);

Map<String, Object> readMapOne(String sql, Object... parameters);
/**
* See {@link OrmMapReader#readMapLazy(String, Object...)}
*
* @param sql
* @return
*/
LazyResultSet<Map<String, Object>> readMapLazy(SqlStatement sql);

/**
* Returns an {@link org.nkjmlab.sorm4j.mapping.LazyResultSetImpl} instance containing data from
* the execution of the provided parametrized SQL and convert it to Stream, List, and so on.
* Returns an {@link LazyResultSet} instance containing data from the execution of the provided
* parametrized SQL and convert it to Stream, List, and so on.
* <p>
* Types returned from the database will be converted to Java types in the map according with the
* correspondence defined in {@link ResultSetConverter#getValueBySqlType(ResultSet, int, int)}.
* correspondence defined in {@link ResultSetConverter#toSingleMap(ResultSet, List, List)}.
* <p>
* Parameters will be set according with the correspondence defined in
* {@link SqlParameterSetter#setParameters(PreparedStatement, Object... )}
*
*/
LazyResultSet<Map<String, Object>> readMapLazy(String sql, Object... parameters);

/**
* See {@link OrmMapReader#readMapList(String, Object...)}
*
* @param sql
* @return
*/
List<Map<String, Object>> readMapList(SqlStatement sql);

/**
* Reads a list of objects from the database by mapping the SQL execution results to instances of
* {@link java.util.Map} containing data from the execution of the provided parametrized SQL and
* {@link java.util.Map} containing data from the execution of the provided parameterized SQL and
* <p>
* Types returned from the database will be converted to Java types in the map according with the
* correspondence defined in {@link ResultSetConverter#getValueBySqlType(ResultSet, int, int)}.
* correspondence defined in {@link ResultSetConverter#toSingleMap(ResultSet, List, List)}.
* <p>
* Parameters will be set according with the correspondence defined in
* {@link SqlParameterSetter#setParameters(PreparedStatement, Object... )}
*
*/
List<Map<String, Object>> readMapList(String sql, Object... parameters);

Map<String, Object> readMapFirst(SqlStatement sql);

LazyResultSet<Map<String, Object>> readMapLazy(SqlStatement sql);
/**
* See {@link OrmMapReader#readMapOne(String, Object...)}
*
* @param sql
* @return
*/
Map<String, Object> readMapOne(SqlStatement sql);

List<Map<String, Object>> readMapList(SqlStatement sql);
/**
* Reads a first row from the database by mapping the results of the SQL query into an instance of
* {@link java.util.Map}. If the given SQL statement gets non-unique result, {@link OrmException}
* is thrown.
*/
Map<String, Object> readMapOne(String sql, Object... parameters);

}
12 changes: 12 additions & 0 deletions src/main/java/org/nkjmlab/sorm4j/OrmTransaction.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package org.nkjmlab.sorm4j;

public interface OrmTransaction extends OrmConnection {

/**
* ALWAYS rollback before closing the connection. If everything is successful, the rollback will
* have no effect.
*/
@Override
void close();

}
58 changes: 32 additions & 26 deletions src/main/java/org/nkjmlab/sorm4j/Sorm.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,27 +13,27 @@ public interface Sorm {

OrmConnection beginTransaction();

<T> TypedOrmConnection<T> beginTransaction(Class<T> objectClass);
<T> TypedOrmTransaction<T> beginTransaction(Class<T> objectClass);

<T> TypedOrmConnection<T> beginTransaction(Class<T> objectClass, int isolationLevel);
<T> TypedOrmTransaction<T> beginTransaction(Class<T> objectClass, int isolationLevel);

OrmConnection beginTransaction(int isolationLevel);
OrmTransaction beginTransaction(int isolationLevel);

<T, R> R execute(Class<T> objectClass, OrmFunctionHandler<TypedOrmConnection<T>, R> handler);
<T, R> R applyAndGet(Class<T> objectClass, OrmFunctionHandler<TypedOrmConnection<T>, R> handler);

<R> R execute(OrmFunctionHandler<OrmConnection, R> handler);
<R> R applyAndGet(OrmFunctionHandler<OrmConnection, R> handler);

<T, R> R executeTransaction(Class<T> objectClass,
OrmFunctionHandler<TypedOrmConnection<T>, R> handler);
<T, R> R applyTransactionAndGet(Class<T> objectClass,
OrmFunctionHandler<TypedOrmTransaction<T>, R> handler);

<T, R> R executeTransaction(Class<T> objectClass, int isolationLevel,
OrmFunctionHandler<TypedOrmConnection<T>, R> handler);
<T, R> R applyTransactionAndGet(Class<T> objectClass, int isolationLevel,
OrmFunctionHandler<TypedOrmTransaction<T>, R> handler);

<R> R executeTransaction(int isolationLevel, OrmFunctionHandler<OrmConnection, R> handler);
<R> R applyTransactionAndGet(int isolationLevel, OrmFunctionHandler<OrmTransaction, R> handler);

<R> R executeTransaction(OrmFunctionHandler<OrmConnection, R> handler);
<R> R applyTransactionAndGet(OrmFunctionHandler<OrmTransaction, R> handler);

<R> R executeWithJdbcConnection(OrmFunctionHandler<Connection, R> handler);
<R> R applyToJdbcConnectionAndGet(OrmFunctionHandler<Connection, R> handler);

OrmConfigStore getConfigStore();

Expand All @@ -45,44 +45,50 @@ <T, R> R executeTransaction(Class<T> objectClass, int isolationLevel,

Connection getJdbcConnection();

<T> void run(Class<T> objectClass, OrmConsumerHandler<TypedOrmConnection<T>> handler);
<T> void apply(Class<T> objectClass, OrmConsumerHandler<TypedOrmConnection<T>> handler);

void run(OrmConsumerHandler<OrmConnection> handler);
void apply(OrmConsumerHandler<OrmConnection> handler);

<T> void runTransaction(Class<T> objectClass, OrmConsumerHandler<TypedOrmConnection<T>> handler);
/**
* Applies transaction
*
* @param <T>
* @param objectClass
* @param handler
*/
<T> void applyTransaction(Class<T> objectClass,
OrmConsumerHandler<TypedOrmTransaction<T>> handler);

<T> void runTransaction(Class<T> objectClass, int isolationLevel,
OrmConsumerHandler<TypedOrmConnection<T>> handler);
<T> void applyTransaction(Class<T> objectClass, int isolationLevel,
OrmConsumerHandler<TypedOrmTransaction<T>> handler);

void runTransaction(OrmConsumerHandler<OrmConnection> handler);
void applyTransaction(OrmConsumerHandler<OrmTransaction> handler);

void runTransaction(int isolationLevel, OrmConsumerHandler<OrmConnection> handler);
void applyTransaction(int isolationLevel, OrmConsumerHandler<OrmTransaction> handler);

void runWithJdbcConnection(OrmConsumerHandler<Connection> handler);
void applyToJdbcConnection(OrmConsumerHandler<Connection> handler);

/**
* Interface for object-relation handling without a return value. e.g.
* {@link Sorm#run(OrmConsumerHandler)}.
* Interface for object-relation handling without a return value.
*
* @param <T>
*/
@FunctionalInterface
public interface OrmConsumerHandler<T> {

void accept(T t) throws Throwable;
void accept(T t) throws Exception;

}

/**
* Interface for object-relation handling with a return value. e.g.
* {@link Sorm#execute(OrmConsumerHandler)}.
* Interface for object-relation handling with a return value.
*
* @param <T>
*/
@FunctionalInterface
public interface OrmFunctionHandler<T, R> {

R apply(T t) throws Throwable;
R apply(T t) throws Exception;

}

Expand Down
8 changes: 4 additions & 4 deletions src/main/java/org/nkjmlab/sorm4j/TypedOrmConnection.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import java.util.function.Function;
import org.nkjmlab.sorm4j.mapping.OrmConfigStore;
import org.nkjmlab.sorm4j.sqlstatement.SelectQuery;
import org.nkjmlab.sorm4j.sqlstatement.NamedParametersQuery;
import org.nkjmlab.sorm4j.sqlstatement.OrderedParametersQuery;
import org.nkjmlab.sorm4j.sqlstatement.NamedParameterQuery;
import org.nkjmlab.sorm4j.sqlstatement.OrderedParameterQuery;

/**
* Main API for typed object relation mapping. The api consists of {@link TypedOrmReader<T>},
Expand All @@ -29,9 +29,9 @@ public interface TypedOrmConnection<T> extends TypedOrmReader<T>, TypedOrmUpdate

SelectQuery<T> createSelectQuery();

NamedParametersQuery<T> createNamedParametersQuery(String sql);
NamedParameterQuery<T> createNamedParametersQuery(String sql);

OrderedParametersQuery<T> createOrderedParametersQuery(String sql);
OrderedParameterQuery<T> createOrderedParametersQuery(String sql);


}
12 changes: 12 additions & 0 deletions src/main/java/org/nkjmlab/sorm4j/TypedOrmTransaction.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package org.nkjmlab.sorm4j;

public interface TypedOrmTransaction<T> extends TypedOrmConnection<T> {


/**
* ALWAYS rollback before closing the connection. If everything is successful, the rollback will
* have no effect.
*/
@Override
void close();
}
14 changes: 0 additions & 14 deletions src/main/java/org/nkjmlab/sorm4j/annotation/package-info.java

This file was deleted.

5 changes: 5 additions & 0 deletions src/main/java/org/nkjmlab/sorm4j/annotation/package.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<html><body>
<p>
Provides annotation for object relation mapping.
</p>
</body></html>
Loading

0 comments on commit c2e997c

Please sign in to comment.