Juergen, Rod, and all:
I'm back from vacation and ready to get going on finishing up version 1
of petclinic. I apologize again for the rough and incomplete nature of
the documentation so far supplied.
In addition to finishing and polishing the docs, I also have in mind a
few other changes:
1. In my ClinicJdbcDAO, I have a number of inner classes that provide
the database queries,updates, and inserts. ClinicJdbcDAO creates
instances of these classes, storing references to them as
RdbmsOperations so that subclasses may substitute their own specialized
versions (as bean properties), including StoredProcedures. A subclass
must also override the related ClinicDAO API method. I didn't add the
setters/getters needed for subclasses to use them. Also, the
afterPropertiesSet method will need to be changed to only add the
default versions for these properties that haven't been set. I will also
move the inner classes outside to package level. This extra level of
complexity isn't really needed for the demo but I think it shows some of
Spring's strengths. I also wanted to show the point that the these
objects are threadsafe, reusable items that can
be created upfront with the SQL statements compiled only once.
2. Implement Juergen's suggestion to eliminate the separation of the
business and persistence layers.
<juergen>Regarding the implementation: I've noticed that the Clinic
interface duplicates ClinicDAO's methods to a large extent, and that
ClinicImpl adds cross-referencing and caching to the entities (data
access aspects). This isn't really proper separation between data access
code and business logic, but of course the borders are often somewhat
blurring. In our case, it's probably more appropriate to merge the two,
i.e. offer just a Clinic interface, with the common logic in an
AbstractClinic base class, and a ClinicJdbcImpl default implementation.
IMO, the app simply isn't complex enough for separated business and data
access layers.</juergen>
3. Miscellaneous minor refactoring and cleanup.
*My questions are :*
Should I focus my work toward a 0.9.1 release (i.e. simply completing
the documentation) or the 1.0RC ?
If the consensus is 0.9.1, when is the target for this release ?
Do you think my item #1 above is worth doing for this demo app or would
it be better to simplify by not showing pluggability of the
RdbmsOperations ?
Ken
|