guptab wrote:
Does anyone ever look at this forums and reply?
Given the number of posts to this forum every day, I would say that the answer to that question is: yes.
I'm not a hibernate 'expert', but from my experience, here is my take on your concerns:
Cases 1 and 2 can be handled by modifying the class and property values in your hibernate configuration files. No changes to application code.
Case 3 should be transparent to hibernate. I don't remember seeing hibernate use any 'SELECT *' statements (somebody correct me if I'm wrong here), so new columns should not affect the application -- unless you've got a NOT NULL constraint or some such on the new column.
Cases 4 and 5 are going to require application changes of some sort, even if you just interpose a new class between hibernate and the application code that manipulates things so that the application code doesn't notice the difference. Putting on my DBA hat, I would say (IMHO) that these two cases represent non-trivial changes in the logical data design, so application changes should be expected.
guptab wrote:
I have another concern...
The physical data layer(Database) should be flexible enough to allow subtle differences primarily for performance or db specific implementations that you don't want creeping into the logical model. If hibernate is incapable of allowing us to encapsulate physical implementation from the object/business layer, then it seems to me that it doesn't meet the criteria for an ORM tool.
There are a number of things that you can muck with at the database physical level that hibernate will be blissfully ignorant about. That's part of what a relational database engine delivers. However, what you're talking about is changing the metadata (i.e. logical model) of the database, and you can only do so much of that before applications are affected.
If you do find an ORM tool that handles all of your cases, reply back here. I'd be interested in seeing just how it handles cases 4 and 5.