This week's giveaway is in the Android forum.
We're giving away four copies of Android Security Essentials Live Lessons and have Godfrey Nolan on-line!
See this thread for details.
The moose likes Object Relational Mapping and the fly likes lots of tables, what kind of mapping? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Databases » Object Relational Mapping
Bookmark "lots of tables, what kind of mapping?" Watch "lots of tables, what kind of mapping?" New topic
Author

lots of tables, what kind of mapping?

Leandro Melo
Ranch Hand

Joined: Mar 27, 2004
Posts: 401
Hi, i'm building a j2ee e-commerce application.
I've modelled the system classes and the database, wich has around 30 tables (i took care of object-relational impedance mistach and everything else i could). Now, i'm in a deep doubt!
Actually, my question is a mixture of j2ee concepts with mapping concepts.
Anything i say from now on is a part of my doubt :-(
The classes i model (from the system use cases) should represent my business view correct (or the persistence view)?
I think it would be better to use composite entity design pattern to build the entities ejbs, but how do i make the choices? I mean, how do choose wich tables are gonna be joined in one composite entity?
Thanks,


Leandro Melo
SCJP 1.4, SCWCD 1.4
Erik Bengtson
Ranch Hand

Joined: Dec 06, 2003
Posts: 90
if you are using CMP entity beans, you don't have much choice. You will mostly be locked in a 1 class - 1 table mapping.
if you are using BMP entity beans, why do that ? it's just a wrapper to a JDBC code that slow down the application performance. Go straight with JDBC
if you are evaluating a real O/R mapper, try Toplink, Hibernate, Torque or JDO.
Check if your O/R mapper also support direct SQL, so you can run stored procedures. To get the best performance, you can combine JDBC or O/R mapper with stored procedures.
Leandro Melo
Ranch Hand

Joined: Mar 27, 2004
Posts: 401
Hi,
i`m new at this, so could u give a litte more information?
- I didn`t understand why u sad that it wouldn`t make sense if i was using
BMPs.
- What exactly does JDO (or hibernate) do? Does it matter if i`m using
CMPs or BMPs?
Thanks is advance,
Christopher Keene
Wavemaker Support
Greenhorn

Joined: Apr 08, 2004
Posts: 2
There is a pretty good article (I have to say that because I wrote it ) on this topic (getting good data access performance in J2EE) on JavaWorld here:
http://www.javaworld.com/javaworld/jw-04-2004/jw-0405-bottleneck-p3.html
There is also a discussion of the same article in The Server Side here:
http://www.theserverside.com/news/thread.tss?thread_id=24932#116887
The problem with CMPs is that they come with a fair amount of overhead and lock you into a specific set of mapping features offered by the J2EE vendor so limit the flexibility of the mapping. BMP has similar overhead to CMP, and gives you unlimited flexibility in mapping by requiring that you do it yourself!
The advice about using stored procedures in conjunction with an O/R mapping layer is also good - that allows you to do some of the uglier data massaging inside the database if you are working with complex legacy tables.
Along with the suggestion to look at OR mapping tools like JDO and Toplink, I would suggest EdgeXtend from Persistence Software for strong OR mapping combined with clustered caching. You can download a trial version here:
http://www.persistence.com/download/index.html
- chris
Persistence Software, the world�s technology leader for data access and caching
www.persistence.com
Erik Bengtson
Ranch Hand

Joined: Dec 06, 2003
Posts: 90
The best advice I can tell you is read the book:
"Expert one-on-one J2EE Design and Development" Rod Johnson
It's a book that pay its price. You will get the best of J2EE can offer, and avoid making mistakes based on true experience of the author.
Erik Bengtson
Ranch Hand

Joined: Dec 06, 2003
Posts: 90
Just for clarification:
EJB container providers (Bea, IBM, JBoss) gives you an O/R mapper, also known as EJB entity beans.
One of the advantages of using CMPs (entity beans) is that it is a standard with the most common O/R mapping features implemented by all vendors. Someday you will use proprietary extensions from your provider, and using standards like EJB CMP or jdo will not warranty your application will be portable between vendors, but it will certainly provide a good level.
The same happens to others O/R proprietary mappers like hibernate, toplink, etc. You will always get locked to your vendor. The best you can do, is evaluate the health of your vendor and its level of maturity in the tool you are using.
Leandro Melo
Ranch Hand

Joined: Mar 27, 2004
Posts: 401
I think Erik's comment is not coherent.
If i'm wrong, someone please correct me, but O/R mapper is "also know as CMPs".
Object relational (OR) is the tool that you'll use have a consisten persistence model, it does not directly implies CMPs.
Leandro Melo
Ranch Hand

Joined: Mar 27, 2004
Posts: 401
I kinda forgot some word.
I meant to say the o/r maaping are NOT also know as CMPs
Erik Bengtson
Ranch Hand

Joined: Dec 06, 2003
Posts: 90
I don't mean O/R mapper = CMP. I mean when you buy an application server J2EE 1.3 you receive an O/R mapper, called EJB CMP. If you know an application server which their CMP implementation is not an O/R mapper, please let me know.

> I didn`t understand why u sad that it wouldn`t make sense if i was using
BMPs.
BMPs are just overhead to something you can do with a DAO pattern
> What exactly does JDO (or hibernate) do? Does it matter if i`m using
CMPs or BMPs?
With CMPs, you cant use other O/R mapper, as all JDBC access code are created by the application server in the moment you deploy your application.
If you put JDO or Hibernate inside a BMP, you are just adding more overhead to your application. More classes, more xml files, an EJB container that will proxy each call to a ejbCreate, ejbLoad, blabla, etc...
My suggestion is choose one of the following:
1- CMP (I know weblogic and websphere, which are pretty good)
2- JDBC with DAO
3- O/R mapper, JDO, hibernate or other
Avoid using BMPs
See this link for many approach of using EJBs and performance results
http://www.urbancode.com/projects/ejbbenchmark/default.jsp
Hope its clearer
Leandro Melo
Ranch Hand

Joined: Mar 27, 2004
Posts: 401
Yep, it cleared out.
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: lots of tables, what kind of mapping?
 
Similar Threads
BODM / class diagram questions
Doubt In MVC..
Doubt...
desing question about composite entity pattern
business objects and class/BODM diagram