Base class for the Database Access Objects that handle the reading and writing a class from the database.
This class is also {@link Iterable} which means you can do a {@code for (T obj : dao)} type of loop code to iteratethrough the table of persisted objects. See {@link #iterator()}.
NOTE: If you are using the Spring type wiring, {@link #initialize} should be called after all of the setmethods. In Spring XML, init-method="initialize" should be used.
@param T The class that the code will be operating on.
@param ID The class of the ID column associated with the class. The T class does not require an ID field. The class needs an ID parameter however so you can use Void or Object to satisfy the compiler.
@author graywatson