• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

why is that?

 
Ranch Hand
Posts: 145
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
DAOs allow you to control the access of data from resources and switch to CMP when the tools have better support, but this means you must write and maintain the SQL code.
 
Ranch Hand
Posts: 122
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I don't think there's no any overhead to switch to CMP later if you use DAO. the benefits of using DAO is not for this purpose.
 
Ranch Hand
Posts: 69
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Ernest Lee:
DAOs allow you to control the access of data from resources and switch to CMP when the tools have better support, but this means you must write and maintain the SQL code.


Hi Ernest,
I agree with you on that the main drawback of DAO and BMPs is that you need to maintain the SQL code (unless you have a tool that automatically maintains it for you!). But sometimes they are necessary due to CMP limitations (ie they do not read BLOB/CLOB fields, or sometimes they do too many unnecessary database accessed)
DAO and entity beans (both BMP and CMP) are very different, so you will have to be very carefull if you start using DAO and then want to switch to entity beans in the future (there are some patterns for this issue that can help).
I would say that the main difference between DAO and entity beans is that DAO is light-weight whereas entity beans are heavy-weight. While using DAO is more efficient, you don't have the features of EJBs.
Eduard
 
Ranch Hand
Posts: 2713
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I slight disagree with the statement:


DAO and entity beans (both BMP and CMP) are very different, so you will have to be very carefull if you start using DAO and then want to switch to entity beans in the future (there are some patterns for this issue that can help).


It seems as if you are saying that one can use either DAO or Entity Beans but not both. Most people that use BMP also utilize DAO to manage the persistance. Personally I don't see much benefit of BMP. If you are just going to wrap a Session Facade around it anyways then why not go with straight DAO? At least with CMP you get the persistance for free.
[ October 15, 2002: Message edited by: Chris Mathews ]
 
Ernest Lee
Ranch Hand
Posts: 145
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Actually, the above sentence is quoted from "SEJA study guide"... I can't really understand it at all... i feel quite disappointed with the GUIDE.
 
Eduard Manas
Ranch Hand
Posts: 69
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Chris,
I agree with you, you can use DAOs for BMPs (and I think it is a good practice for those developing BMPs!).
However, what I meant is that you have to be careful from the database-layer client point of view (ie session beans). You don’t use DAOs in the same way as entity beans. For example, to use a DAO you just need to create a simple object and start using it (simple, isn’t it). However, if you want to use entity beans you need to do a little bit more work, such as lookup home interface, narrow it down and get the remote interface.
My point was that if you want to leave the option open for switching from DAOs to entity beans in the future (or viceversa), you’ll have to be careful how you access the database-layer from session beans (otherwise you’ll get stuck with one technology)
Finally, I also think the future of entity beans is CMP. However, I think it is still an evolving technology that it hasn’t got there just yet. For example, if your database use BLOB/CLOBs, there is no way of accessing them through CMPs. Or sometimes they cannot handle complex entities (ie involving several tables). CMP 2.0 attempts to fix this problem, but those unlucky developers working with Websphere can only cry and watch.
 
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Is that BMP with DAO instead of Session Facade with DAO is to promote better component-based developement?
Steve.
 
Steve Wong
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
So, to ease the switching to CMP later, we should now use BMP with DAO instead of DAO alone.
So that the caller has the very similar interface on accessing the persistence logic.
Am I right?
Thx. and Regards.
Steve.
 
Chris Mathews
Ranch Hand
Posts: 2713
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Here is an interesting discussion that we have going in the J2EE and EJB Forum about CMP vs BMP: Best Design Practices.
 
Eduard Manas
Ranch Hand
Posts: 69
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Steve Wong:
Is that BMP with DAO instead of Session Facade with DAO is to promote better component-based developement?
Steve.


I think the Session Fa�ade pattern is meant to be used only for the business layer (ie for clients accessing session beans) rather than session beans accessing the database layer (as per Floyd Marinescu’s book – “EJB Design Patterns”, which by the way I think it is a master piece). The idea behind this is that application clients (ie JSPs, Action classes from struts framework, java applications… should not know the guts of the application, thus accessing it via a Fa�ade makes sense. However, I don’t think the same applies for session beans accessing entity beans.
Anyway, I think the decisions an architect should take when designing the database layer are as following:
1) Decide whether to use DAO (light-weight) or entity beans (heavy-weight)
2) If you want to use entity beans, decide whether to use CMP or BMP
3) If you want to use BMPs, decide whether you want to put the SQL statements in the EJB, or move them outside, and I think using DAO for the latter is a good option.
There is a very good discussion on whether you should use DAOs or entity beans in Floyd’s book (chapter 8). By the way, you can get it online at www.theserverside.com.
Eduard
 
World domination requires a hollowed out volcano with good submarine access. Tiny ads are optional.
a bit of art, as a gift, the permaculture playing cards
https://gardener-gift.com
reply
    Bookmark Topic Watch Topic
  • New Topic