I'm afraid you can't easily debunk these statements. If the DB is used as a store for multiple different applications on different plattforms then a lot of this rules makes sense.
Not that you couldn't solve this issues in you applications but from the classic DBA point of view where the DB is the center of the universe ;-).
So the only thing I can help you with is my opinion on the arguments:
Quote:
1) EVERY statement, must have WITH(NOLOCK). ie SELECT foo FROM bar WITH(NOLOCK). If it doesn't it will cause mass lock contention.
Can't really judge this one. You can set an isolation level in hibernate which is used for the all statements inside a transaction. But I think that's not quite the same. As I mentioned, you may work around this with your own dialect. But If you follow argument 4) then this shouldn't be a problem anyway.
Quote:
2) ALL selects must be done against views because of his "maintainability" practices. One of their views contains 14 joins!
That's ok, if the view is simply a wrapper for a single table. When you have joins, then IMHO it's not a "maintainability" view.
You can map views with hibernate as you would map a table.
Quote:
3) Nulls are bad. Foreign keys cannot even be null, they have to map to the 0 record (which is blank information). While I agree that NULLs shouldn't be used everywhere, they are needed on foreign keys.
Doesn't make sense for me when speaking about fk. It's ok for "normal" columns.
This possibly would be a killer if you want to use hibernate.
Quote:
4) EVERY statement (insert, update, delete) MUST be a sproc. Even dynamic SQL must be in a sproc so it can be fixed live. The DBA can skip QA and often does. Apparently, deploying DLL patches is bad.
Yes, that's what they love ... makeing changes to production database. Pass this argument to Change Management, sit back and watch the battle ... :-D.
If that's really an issue ... you can put almost all statement that hibernate uses into the mapping files. And the mapping files can be kept outside the dll's. So you can regard them as configuration and change them easily in a live environment.
Quote:
5) Identities are the devil and are not to be used because they do not replicate.
6) Unique identifiers are not be used because they do not replicate. I thought that was one of their main purposes.
Then what should you use ? Afaik GUID is exactly for this purpose.
Quote:
7) do not use BIT, always use INT. His argument, BITs cannot be used in indexes. I'm not sure why you would EVER use a bit in an index!?
Then don't use bit ... you can map bool to int with hibernate. There is a discussion about this going on on nhusers group.
Quote:
8) ORMs are bad because they create dynamic SQL that is recompiled and causes heavy load on the server.
Can't really judge this one. But you can use sprocs with hibernate for all operations.
You probably get more qualified answers for 1) + 8) from the guis at nhusers group.