File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
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
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: 782

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: 782

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!