This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
I am a beginner in Hibernate. I have just started reading the Hibernate. And, as per reading, I have found that Hibernate will add some columns like 'Discriminator'. And, there are some inheritance implementation strategies in Hibernate. So, I am confused about the actual Hibernate usage i.e. whether we should use Hibernate in an application where Database is already in place or not. Or, Hibernate is a good candidate for an application where we are also designing the db from scratch. Since I see some tight coupling of DB with Hibernate. Please suggest.
You can use Hibernate in legacy applications or new ones. Whether it is worth it to introduce into a legacy application may be debatable as it would most likely be a big change. However I would use it in any new application regardless of whether it was using a new database or a legacy database behind the scenes just because of the many benefits it offers. I would argue that an ORM decouples the application from the database as one of the issues an ORM addresses is that applications should be written in terms of the domain model,not bound to the relational model.
That said in any new applications I abstract things one level further and use JPA2 with hibernate as my provider. This also gives you the flexibility to switch persistence providers in the future if necessary and makes you compliant with the standard.