ORM or Object Relational Mapping is a system that implements the responsibility of mapping the Object to Relational Model. That means it is responsible to store Object Model data into Relational Model and further read the data from Relational Model into Object Model.
Some popular implementations are Hibernate, EclipseLink, and Apache OpenJPA. JPA defines the metadata via annotations in Java classes or via XML configuration files. However, we can use both XML and annotation to describe the metadata.
Hibernate is the popular and most advanced among all JPA implementations due to Red Hat. Hibernate ORM is one of the most mature JPA implementations, and still a popular option for ORM in Java. It uses its own tweaks and added features that may be used in addition to its JPA implementation. It has a bigger community of users and is well documented. Some of the additional proprietary features are support for multi-tenancy, inheritance, joining entities in queries, timestamp management, Hibernate Search, Hibernate Validator, and Hibernate OGM, which supports domain-model persistence for NoSQL.