""When you include all functionality of your application and the access to the database within your dialogs, you will have some severe disadvantages.""
This talks of a scenario when you are calculating or applying some business logic in a function and then saving that value in oracle database in same function, lets say.
Now what happens if you have to change the database at back end or upgrade it. Now your code will be tightly coupled with the databse calls and it will be difficult and time consuming to change all this and Consider a very big business application, here this change can itelf become a big overhead.
hence there comes advantage of layered architecture. where functionality is separated from databse calls. But hibernate gives advantages one step ahead of this.
Now lets take the same example stated above. When you are using hibernate, for CRUD(create,read,update,delete) you are just calling plain java methods , without writing any sql, and connection settings are also defined in xml files.
Hence in this case if you are changing back end databse or some other changes, your code is very loosely coupled, and all you require is to change some property or xml files adn here you go.