MYBATIS - Hibernate


There are major differences between MyBatis and Hibernate. Both the technologies work well, given their specific domain. MyBatis is suggested in case −

  • You want to create your own SQL's and you are willing to maintain them.
  • Your environment is driven by relational data model.
  • You have to work on existing and complex schemas.

Use Hibernate, if the environment is driven by object model and needs to generate SQL automatically.

Difference between MyBatis and Hibernate

Both Hibernate and MyBatis are open source Object Relational Mapping (ORM) tools available in the industry. Use of each of these tools depends on the context you are using them.

The following table highlights the differences between MyBatis and Hibernate −

MyBatis Hibernate
It is simpler. It comes in a much smaller package size. Hibernate generates SQL for you, which means you don’t have to spend time on generating SQL.
It is flexible, offers faster development time. It is highly scalable, provides a much more advanced cache.
It uses SQL, which could be database dependent. It uses HQL, which is relatively independent of databases. It is easier to change db into Hibernate.
It maps the ResultSet from JDBC API to your POJO Objects, so you don’t have to care about table structures. Hibernate maps your Java POJO objects to the Database tables.
It is quite easy to use stored procedure in MyBatis. Use of stored procedures is a little difficult in Hibernate.

Hibernate and MyBatis both are compatible with the SPRING framework, so it should not be a problem to choose one of them.