What is the hibernate and how its useful for application development?