Hibernate advantages and disadvantages
Advantages of using Hibernate
- Traditionally Programmers need to write functions that convert the object to query and result set to object. To overcome these difficulties, Hibernate provides a mechanism to maps Java classes to database tables and from Java data types to SQL data types and relieve the developer from 95% of common data persistence related programming tasks. Read more..
- Database independent – Hibernate has its own query language, i.e Hibernate Query Language(HQL) which is independent of database. HQL is an object-oriented extension to SQL, So we no need to write code specific to database.
- No knowledge of SQL is needed. For example saveOrUpdate(entityObject) takes care of insertion in case of Hibernate.
- Takes care of dependencies between tables and does join queries.
- Query tuning is not required in Hibernate as it is automatically achieved by using Criteria queries
- Hibernate supports first level cache by default. This reduces the number of round trips between application and database and hence increases performance.
- Hibernate supports relationships like One-To-Many,One-To-One, Many-To-Many-to-Many, Many-To-One
- Hibernate supports Collections like List,Set,Map
- Hibernate has capability to generate primary keys automatically while we are storing the records into database.
- Maintains transactions commit and rollback.
- Maintains database connection pool.
- Hibernate does not require an application server to operate.
Hibernate supports almost all the major RDBMS. Following is list of few of the database engines supported by Hibernate.
- HSQL Database Engine
- Microsoft SQL Server Database
- Sybase SQL Server
- Informix Dynamic Server
Disadvantages of hibernate
- If it is a small project with few tables(< 10 tables) , then there is no need for a ORM framework. In such case a normal JDBC is enough.
- Hibernate has a performance cost as it adds a layer over jdbc. Also with Hibernate lot of table configuration information (hbm or annotations) is read at start up adding to the start up time of your application.
- Not suitable for Batch processing– It advisable to use pure JDBC for batch processing.