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.