Defining a Schema
Sessions and Transactions
Insert, Update, Delete
Group and Aggregate Queries
Functions and Operators
Optimistic Concurency Control
Arbitrary scalar expressions
Using in a Java project
“It seems that perfection is reached not when there is nothing left to add, but when there is nothing left to remove.”
*Antoine de Saint-Exupéry*
Minimalism in all its forms
What is left out of a framework or language is as important as what is included. It’s easy to pile on features, removing them is
hard, and any system will eventually evolve to a point of
i.e. the point where every new feature added has undesirable interference with existing ones, or the complexity is no longer justified by the functionality it provides. We could describe this state as
. Only by putting a lot of efforts and thoughts into how to add
as little as possible
into Squeryl will it have a healthy longevity.
The functionality that is added should have the smallest conceptual
Lets define the
by this ratio : functionality / (conceptual
conceptual surface area
here means complexity, in terms of API size, number of concepts that need to be introduced. While complexity is certainly a subjective and imprecise concept, extreme
is usually unanimously recognized as such, there is hardly any one for example that could claim that EJB2.0 has a high
Zero tolerance for redundancy : the worst form of redundancy is the one imposed by a framework or library on user code, followed by redundancy in the DSL.
Keep in mid that a persistence layer addresses only one aspect among many in an application and should leave as much
as possible for the other aspects.
Convention over Configuration.