As an exercise, I'm starting to design an application I might call a "Music Media Database". It's intended as a personal catalog of cassettes, CDs, and LPs, describing the information about each album and their included tracks, including their lyrics (optionally). Users can list albums, see the detail of each album, including the list of tracks and the list of credits. They can see the detail of each track, including the lyrics (if available). They can also list all album tracks, separate from the album listing. Search facilities for Album and AlbumTrack information will be available.
I intend to build it as a full J2EE application, using Entity EJBs with CMP 2.0 underneath a Session Facade, and with a user interface built with JSP and Struts. If I have time, I may implement subclasses of the CMP 2.0 entities to implement BMP (just as another exercise). Some of these technologies are probably overkill for an application of this scale, but I'm just doing it as an exercise. I'm currently working on the object model of the entity and session EJBs. The entities and some of the related data objects were pretty straightforward, but now I'm wondering what the Session Facade should look like. It's also possible one or more of the entities will become pure dependent objects. I'm just looking for some suggestions on the EJB object model, particularly the Session Facade, or any other general suggestions. I currently have the following basic entities: Album +name +description +mediaID +mediaType: MediaType +musicType: MusicType +releaseDate +coverGraphic: Object +musicCredits: Collection [MusicCredit] +albumTracks: Collection [AlbumTrack] AlbumTrack +name +description +musicType: MusicType +trackNumber +playingTime +lyrics +musicCredits: Collection [MusicCredit] MusicCredit +role +name I will have Data Transfer Object classes corresponding to my entities, but I don't show them here. The MusicType and MediaType classes will probably just be implemented as interfaces with integer constants, but it helps to describe them in UML as classes with static instances. MusicType +ROCK: MusicType +COUNTRY: MusicType +BLUES: MusicType +FOLK: MusicType +JAZZ: MusicType +CLASSICAL: MusicType MediaType +COMPACT_DISC: MediaType +CASSETTE: MediaType +LP_VINYL: MediaType So far, I have the following two Sessions in my Session Facade. I'll definitely have to extend these to model the services the user interface will need. AlbumManager +createAlbum() +deleteAlbum(in album: Album) +getAlbums(): Collection [Album] +saveAlbum() TrackManager +createTrack() +deleteTrack(in albumTrack: AlbumTrack) +getAllTracks(): Collection [AlbumTrack] -- =================================================================== David M. Karr ; Java/J2EE/XML/Unix/C++ [EMAIL PROTECTED] =========================================================================== To unsubscribe, send email to [EMAIL PROTECTED] and include in the body of the message "signoff EJB-INTEREST". For general help, send email to [EMAIL PROTECTED] and include in the body of the message "help".
