Relation between JPA and Hibernate annotation

jpa vs hibernate
jpa annotations
what is jpa
jpa tutorial
jpa annotations tutorial
hibernate annotations list with explanation
jpa example
hibernate tutorial

I am quite new in Spring world and I am studying how to integrate Hibernate and Spring framework

i have some dount about the relation beetween Hibernate annotation and JPA annotation.

Whene I have something like the following entity class:

package org.andrea.myexample.HibernateOnSpring.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

/* Classe che rappresenta un oggetto da persistere sul database
public class Person {

    private int pid;

    private String firstname;

    private String lastname;

    public int getPid() {
        return pid;

    public void setPid(int pid) { = pid;

    public String getFirstname() {
        return firstname;

    public void setFirstname(String firstname) {
        this.firstname = firstname;

    public String getLastname() {
        return lastname;

    public void setLastname(String lastname) {
        this.lastname = lastname;

The thing that I am not understanding is what is the relationship between Hibernate annotation and JPA annotation

The annotation @Entity, @Table(name="person"), @GeneratedValue(strategy=GenerationType.AUTO) and id using in the previous example are simple JPA annotation or specific annotation for Hibernate?

if I'm using JPA annotations to persist the data to the database, what's giving me Hibernate?



Java persistence with JPA and Hibernate, Part 1: Entities and , We have another set of annotations that are used to specify the association mapping� Introduction. In this article, we'll dive into Relationship Mapping with JPA and Hibernate in Java.. JPA is the persistence standard of the Java ecosystem. It allows us to map our domain model directly to the database structure and then gives us the flexibility of manipulating objects in our code - instead of messing with cumbersome JDBC components like Connection, ResultSet, etc.

Hibernate is an implementation of the JPA specification. JPA is just a specification, and a set of annotations and interfaces. You need an implementation of JPA to use it, and Hibernate is one of them. Just like to use JDBC, you need a database driver.

The package of the annotation is javax.persistence, so they're JPA annotations. Hibernate annotations are in the package

JPA Annotations - Hibernate Annotations, Let's take a quick look at what Hibernate offers with the @Entity annotation. Whilst fulfilling JPA contract, @org.hibernate.annotations.Entity adds� Association mappings are one of the key features of JPA and Hibernate. They model the relationship between two database tables as attributes in your domain model. That allows you to easily navigate the associations in your domain model and JPQL or Criteria queries.

Like @SJuan76 is saying, JPA (Java Persistence API) is a specification and Hibernate is one implementation. I agree with the others; stick to using plain JPA as much as you can. The JPA specification doesn't change very often, and when it does it is usually backward compatible. This means that your code will be protected from changes in the implementation. You are for example free to upgrade your Hibernate dependencies if your code don't depend on anything from org.hibernate.* but rather javax.persistence.*.

Btw. JPA is in version 2.2 as of Hibernate 5.3. Read more about JPA here

The Difference Between JPA, Hibernate and EclipseLink, In this quick article, we will look at describing the difference between the Let's first know the definition of JPA, Hibernate, and Spring Data JPA, so this will boundaries declaratively using the @Transactional annotation. Think of JPA as the guidelines that must be followed or an interface, while Hibernate's JPA implementation is code that meets the API as defined by the JPA specification and provides the under the hood functionality. In short, JPA is the interface while Hibernate is the implementation. Traditionally there have been multiple Java ORM solutions:

What Is the Difference Between Hibernate and Spring Data JPA , JPA vs. Hibernate. What is JPA? A JPA (Java Persistence API) is a specification of Java which is used to access, manage, and persist data between Java object� JPA is a framework for managing relational data in Java applications, while Hibernate is a specific implementation of JPA (so ideally, JPA and Hibernate cannot be directly compared). In other words, Hibernate is one of the most popular frameworks that implements JPA.

JPA vs. Hibernate, You just need to implement the AttributeConverter interface and annotate the class with a @Converter annotation. Here's an example of an attribute converter that� It is using JPA annotations, and Hibernate is a JPA implementation. JPA by itself is just a set of interfaces/annotations, while JPA implementation (like Hibernate) provides meat around those interfaces/annotations. There is no difference between the two annotations, other than specified schema.

What's the difference between JPA, Hibernate and EclipseLink, Annotate large objects with @Lob. Hibernate Association Mapping Annotations. Example App DB Schema. DB Schema The database for this tutorial is designed � The @JoinColumn annotation helps Hibernate (the most famous JPA provider) to figure out that there is a post_id Foreign Key column in the post_comment table that defines this association. With this annotation in place, when persisting the three PostComment entities, we get the following SQL output: 1 2

  • JPA is an API, hibernate provides an implementation.
  • so JPA provide me something like interfaces or abstract classes that are implemented by Hibernate?
  • @AndreaNobili exactly
  • +1, although the last part is incorrect. Even if you use Hibernate with its proprietary API, you'll have to use JPA annotations. Hibernate doesn't reimplement the JPA annotations.
  • "you will need no changes to your program" - I wonder if anyone has ever found that to be 100% true. :) +1 for the answer.