## 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, and PostreSQL | 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 | -- |
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 | -- |
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)* | -- |
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 | -- |