This week's book giveaway is in the JDBC forum.
We're giving away four copies of Make it so: Java DB Connections & Transactions and have Marcho Behler on-line!
See this thread for details.
The moose likes OO, Patterns, UML and Refactoring and the fly likes [ DAO ] A question Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of Make it so: Java DB Connections & Transactions this week in the JDBC forum!
JavaRanch » Java Forums » Engineering » OO, Patterns, UML and Refactoring
Bookmark "[ DAO ] A question" Watch "[ DAO ] A question" New topic

[ DAO ] A question

Pho Tek
Ranch Hand

Joined: Nov 05, 2000
Posts: 776

In the DAO sample from pet store, the DAO
class signature reads like this:

My question: why is it that the create method
returns a CustomerVO (Value object)? Is the
returned CustomerVO the same the as the one
passed into create() ? If not, what's the difference. Thanks.


Chris Schneider

Joined: Apr 24, 2002
Posts: 1
One point might be to include extra data that was added while creation of the VO in the database... Like IDs (Primary-Key) for example that are auto-generated... By returning the freshly added VO out of the create-method you would have an easy way of accessing these extra values within your calling code...
Best Regards,
Pho Tek
Ranch Hand

Joined: Nov 05, 2000
Posts: 776

If primary keys (e.g. surrogate keys) are auto generated during the insert, does it imply that I would need to do an additional select to compose the returned CustomerVO ? In informix (which is what I'm using); there is a feature to retrieve an auto generated key from an insert (without doing another round trip to the db server).
ben munoz

Joined: Jul 24, 2001
Posts: 5
How to get the primary key is most likely implementation specific. You can disable autogenerated primary keys for a table and insert your own primary key. Then you know what the primary key will be before you insert it. This method is cross-database, gives you more control, but is slightly more work to implement.
If your primary key is autogenerated you can 1) use vendor specific syntax to return the last inserted primary key like @@identity in TransactSQL or 2) use a select statement based on a 'date_added' column with other values just inserted.
Then set the primary key of your value object and return that.
I agree. Here's the link:
subject: [ DAO ] A question
It's not a secret anymore!