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".

Reply via email to