Confusion with BusinessObject implementations 2004-08-18 - By Robert Taylor
Back Greetings,
I've been reading Core J2EE Patterns, Second Edition and for the most part it has really been helpful in explaining the architectural entities of the enterprise.
However, after reading the section on the business tier and having various discussions with other architects I'm confused about the following passage on page 375 in the BusinessObject section (chapter 7).
"BusinessObjects encapsulate and manage business data, behavior and persistence ."
This seems to imply that the BusinessObject should contain methods like create(), update(), delete(), and various finder methods for managing its own persistence and data access along.
This, however, does not seem to be the concensus when implementing BusinessObjects.
Most architects manage persistence extrinsically to the BusinessObject itself. That is, they use the appropriate DataAccessObject to persist and access BusinessObjects; usually within some type of ApplicationService or ServiceFacade.
For example:
// Creating a new account METHOD 1 Account account = // populate account BusinessObject AccountDAO accountDAO = // get an instance of AccountDAO accountDAO.create(account);
as opposed to...
// Creating a new account METHOD 2 Account account = // populate account BusinessObject account.create(); // create a new account delegating persistence to AccountDAO
It seems like METHOD 2 is more OO but requires the BusinessObject to become a facade to the DAO, where as METHOD 1 seems more procedural but has a clearer architectural separation of responsibility.
Can anyone give me some pros and cons on the above two approaches? Is one better than the other?
robert
==================================================================== Companion Site: http://www.corej2eepatterns.com J2EE BluePrints: http://java.sun.com/blueprints/corej2eepatterns List Archive: http://archives.java.sun.com/archives/j2eepatterns-interest.html Unsubscribing: email "signoff J2EEPATTERNS-INTEREST" to listserv@(protected)
|
|