## Comparison to JaQu This is an overview of the fundamental differences between the original JaQu project and the current featureset of iciql.
Iciql | JaQu | |
---|---|---|
core | ||
deployment | small, discrete library | depends on H2 database jar file |
databases | H2, HSQL, Derby, MySQL, PostreSQL, and SQLite | H2 only |
logging | console, SLF4J, or custom logging | console logging |
exceptions | always includes generated statement in exception, when available | -- |
column mappings | wildcard queries index result sets by column name | all result sets built by field index this can fail for wildcard queries |
savepoints | bulk operations (insert, update, delete) use savepoints with rollback in the event of failure | -- |
syntax and api | ||
VIEWs | create readonly views either from a class definition or from a fluent statement | -- |
Foreign Key Constraints | model classes may be annotated with foreign key constraints | -- |
dynamic queries | methods and where clauses for dynamic queries that build iciql objects | -- |
DROP | syntax to drop a table or view | |
BETWEEN | syntax for specifying a BETWEEN x AND y clause | -- |
(NOT) IN | syntax (oneOf, noneOf) for specifying a (NOT) IN clause | -- |
compound nested conditions | WHERE (x = y OR x = z) AND (y = a OR y = b) | -- |
dynamic DAOs | DAO interfaces with annotated statements may be declared and dynamically generated | -- |
types | ||
primitives | fully supported | -- |
enums | fully supported | -- |
DECIMAL(length,scale) | can specify length/precision and scale | -- |
BOOLEAN | flexible mapping of boolean as bool, varchar, or int | -- |
BLOB | partially supported (can not be used in a WHERE clause) | -- |
Custom | partially supported uses custom-defined data type adapter (can not be used in a WHERE clause) | -- |
UUID | fully supported (H2 only) | -- |
configuration | ||
DEFAULT values | set 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 names | can be set | -- |