JaQu Comparison

This is an overview of the fundamental differences between the original JaQu project and the current feature set of iciql.

IciqlJaQu
core
deploymentsmall, discrete librarydepends on H2 database jar file
databasesH2, HSQL, Derby, MySQL, PostreSQL, and SQLiteH2 only
loggingconsole, SLF4J, or custom loggingconsole logging
exceptionsalways includes generated statement in exception, when available--
column mappingswildcard queries index result sets by column nameall result sets built by field index
this can fail for wildcard queries
savepointsbulk operations (insert, update, delete) use savepoints with rollback in the event of failure--
syntax and api
VIEWscreate readonly views either from a class definition or from a fluent statement--
Foreign Key Constraintsmodel classes may be annotated with foreign key constraints--
dynamic queriesmethods and where clauses for dynamic queries that build iciql objects--
DROPsyntax to drop a table or view
BETWEENsyntax for specifying a BETWEEN x AND y clause--
(NOT) INsyntax (oneOf, noneOf) for specifying a (NOT) IN clause--
compound nested conditionsWHERE (x = y OR x = z) AND (y = a OR y = b)--
dynamic DAOsDAO interfaces with annotated statements may be declared and dynamically generated--
types
primitivesfully supported--
enumsfully supported--
DECIMAL(length,scale)can specify length/precision and scale--
BOOLEANflexible mapping of boolean as bool, varchar, or int--
BLOBpartially supported (can not be used in a WHERE clause)--
Custompartially supported uses custom-defined data type adapter (can not be used in a WHERE clause)--
UUIDfully supported (H2 only) --
configuration
DEFAULT valuesset from annotation, default object values, or Define.defaultValue()set from annotations
Interface Configuration
Mapped Fields
all fields are mapped regardless of scope
fields are ignored by annotating with @IQIgnore
all public fields are mapped
fields are ignored by reducing their scope
Index namescan be set--