This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
I have a newbie's question about O-R mapping tools.
I am a java developer, and we always use jdbc as persistence layer. Just little time use IBatis as mapping tool.
Recently, we met a big project with is transactional based business system. There are much data need to solve. nearly 1000+ tables, DBAs say that they need to create about 2000+ views. OK, we need EJB3 ,but does we need JPA? I am not sure does JPA stable for so much data.
The problem I worried about is: I heard that linkedin has nothing O-R mapping, just jdbc directly. I am not sure does JPA stable for big project.
Mama always said, "Life is like a box of chocolates; you never know what you're gonna get. And then you have to get medieval on somebody's buttocks."
O/R mapping is well suited for read--> modify --> write centric applications and not suited for write centric applications (i.e. batch processes with large data sets like 5000 rows or more) where data is seldom read. O/R mapping tools/frameworks allow you to model inheritance (Refer Q101 in Enterprise section), association and composition class relationships. O/R mapping tools work well in 80-90% of cases and use basic database features like stored procedures, triggers etc, when O/R mapping is not appropriate. Keep in mind that no one size fits all solution. Always validate your architectural design with a vertical slice and test for performance. Some times you have to handcraft your SQL and a good O/R mapping (aka ORM) tool/framework should allow that. O/R mapping tools/frameworks allow your application to be:
• Less verbose (e.g. transparent persistence , Object Oriented query language , transitive persistence etc)
• More portable (i.e. vendor independence due to multi dialect support )
• More maintainable (i.e. transparent persistence, inheritance mapping stategies, automatic dirty checking etc).