|
From: Ken K. <kk...@kk...> - 2003-07-08 17:28:17
|
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 |