Simplify database operations
Examples of such tools include:
These tools generally fall into two categories:ORM tools are widely used, but there are trade-offs:
.sql
text files placed near the corresponding DAO
(usually in the same directory).
FETCH_PREFERENCES { SELECT Id, LoginName, ScreenName FROM Users WHERE LoginName=? } CHANGE_PREFERENCES { UPDATE Users SET ScreenName=? WHERE LoginName=? }Entries in the above
.sql
file are referenced in code using SqlId
objects,
such as FETCH_PREFERENCES
:
import static hirondelle.predict.main.preferences.PreferencesAction.CHANGE_PREFERENCES; import static hirondelle.predict.main.preferences.PreferencesAction.FETCH_PREFERENCES; import hirondelle.web4j.database.DAOException; import hirondelle.web4j.database.Db; import hirondelle.web4j.security.SafeText; /** Data Access Object for user {@link Preferences}. */ public final class PreferencesDAO { /** Fetch the {@link Preferences} for a given user. */ public Preferences fetch(SafeText aUserId) throws DAOException { return Db.fetch(Preferences.class, FETCH_PREFERENCES, aUserId); } /** Change the {@link Preferences} for a given user. */ void change(Preferences aPreferences) throws DAOException { Db.edit( CHANGE_PREFERENCES, aPreferences.getScreenName(), aPreferences.getLoginName() ); } }That's all there is to it. There's no mapping involved.