Hi Armin,

I like that idea!
I've just created the page:
http://wiki.apache.org/db-ojb/BestPractices

Thomas

> -----Original Message-----
> From: Armin Waibel [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, May 11, 2004 9:59 AM
> To: OJB Users List
> Subject: Re: OJB practices (best?)
> 
> 
> Hi John,
> 
> why not start a "OJB best practices" on the OJB wiki
> http://wiki.apache.org/db-ojb/
> 
> in due time we can integrate the best suggestions made on 
> this page in 
> OJB documentation.
> 
> regards,
> Armin
> 
> McCaffrey, John G. wrote:
> 
> > I would like to know how other teams are using OJB, what 
> their experiences
> > have been, and some of the architecture decisions you have 
> built around OJB.
> > (I know this is not a pure OJB question, but I would like 
> to help compile a
> > list of common architecture approaches to help new people 
> get started)
> > 
> > Think of it as a "Here's how my team uses OJB" thread
> > 
> > How do most of you organize your data access layer? 
> > 
> > Specifically
> > Are you building Composite VO/DTOs? (an object that 
> represents data from
> > several tables)
> > Do you build a new DAO for every mapped value object (VO)?
> > Do you pass these VOs to other layers, or do you adapt them 
> to a more
> > generic object for biz and view purposes?
> > Do you use QueryBySQL or ReportQuery often?
> > Are you using caching?
> > DO you use PB interface?
> > How do you manage Transactions?
> > 
> > 
> > 
> > Here's how my team uses OJB (RC5)
> > We had two basic goals when building our architecture
> > 1. isolate View, business, and data access layers so that a 
> change to one
> > wouldn't break the others
> > 2. isolate OJB, so that the data access layer could be 'swappable'
> > 
> > Steps we take when building on new functionality (we use PB 
> interface)
> > 1. use (modified) reverseDB to generate VOs and 
> repository_user.xml for
> > tables and views in DB
> > 2. modify VOs, and repository_user.xml to reflect our 
> logical mapping of the
> > tables (compositeVOs)
> > 3. verify basic CRUD for VO(BaseDAO handles Create, update, insert,
> > findByVO, findbyPK for any mapped object)
> >  (optional) build specific DAO if BaseDAO isn't good enough
> > 4. BusinessDelegate objects get handle to DAO through a factory
> > 5. BusinessDelegate controls transaction when it needs to
> > 6. OJB query and Criteria are wrapped in our QueryVO object 
> so that biz
> > layer doesn't know about OJB 
> > 7. VOs are adapted to view specific objects and passed to 
> struts action
> > classes (this is to separate the table based VO from the 
> front-end view)
> > 
> > Misc
> > - schema="&schema;" variable is used in 
> repository_user.xml, so that the
> > application can be migrated from test to production 
> (servlet loads different
> > repository.xml in each environment)
> > - queryBySQL is used for very complicated SQL (we are 
> trying to phase this
> > out as we learn OJB)
> > - When calling DB stored procedures we use OJB to get 
> sql.connection and the
> > appropriate schema
> > - We use SequenceManagerNativeImpl to grab DB2 created Identities
> > - Created a conversion Boolean2CharYN (for converting a 
> single char 'Y' or
> > 'N' in DB to a boolean
> > - We had to create our own PlatformCustDb2Impl because the 
> identity query(in
> > RC5) did work with DB2 7.x 
> > 
> > open issues:
> > - queryBySQL fails on DB2/websphere 4 when executing the 
> same query twice
> > (we coded a workaround)
> > - we have a few 1-1 parent child mappings and we want the 
> parent to contain
> > a child
> > - we keep history in our tables, so we often have a date as 
> a primary key,
> > but we don't know the exact date when we do a join, but we 
> want to join on
> > the most current date. this is a problem for 1-1
> > 
> > 
> > How are you using OJB?
> > 
> > 
> > 
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> > 
> > 
> > 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to