Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hibernate - difference between annotations and commons-annotations?

Tags:

To keep it short and sweet:

There is hibernate-commons-annotations 4.1.0-Final and hibernate-annotations 3.5.6-Final.

I'm a nub, what's the difference between them, and do I need them both?

Trying to "avoid" JPA and by that I mean using the JPA 2.0 standards embedded within Hibernate.

Thanks!

like image 815
Sam Levin Avatar asked Jun 23 '12 16:06

Sam Levin


People also ask

What are the JPA annotations?

JPA annotations are used in mapping java objects to the database tables, columns etc. Hibernate is the most popular implement of JPA specification and provides some additional annotations. Today we will look into JPA annotations as well as Hibernate annotations with brief code snippets.

What is entity annotation in hibernate?

@Entity annotation marks this class as an entity. @Table annotation specifies the table name where data of this entity is to be persisted. If you don't use @Table annotation, hibernate will use the class name as the table name by default. @Id annotation marks the identifier for this entity.

What are the mandatory annotations in JPA entity class?

In most cases, you only need to annotate your entity class with @Entity and your primary key attribute with @Id and @GeneratedValue. If the names of your entity class or one of its attributes don't match the table or column names, you can adjust the mapping using a @Table or @Column annotation.


2 Answers

Previously, hibernate-annotations was released and versioned from hibernate core. But from version 3.5 and up it is included with hibernate core. And for some reason it was still released from 3.5.0 to 3.5.6 but you do not need it anymore.

And coming to hibernate-commons-annotations, it is a utility project used by annotations based hibernate sub-projects. It is used by other hibernate projects like hibernate-search and thus is maintained as a separate project and it is a compile time dependency for hibernate-core v3.6.0 and up.

Source 1 Source 2

like image 193
Ravi Kadaboina Avatar answered Oct 07 '22 01:10

Ravi Kadaboina


Hibernate Commons Annotations is "Utility project for annotation handling", as said for example here. It does not contain such API that normal user of Hibernate should use.

Hibernate annotations contained persistence mapping annotations and related code. Nowadays it is merged to Hibernate core.

If you really want to avoid JPA (1/2) that is easily done by not using classes from javax.persistence package or from its subpackages. If you want opposite, use javax.persistence and avoid org.hibernate packages where possible.

Good guide to get started with Hibernate can be found from http://docs.jboss.org/hibernate/orm/4.1/quickstart/en-US/html_single/. It also tells which libraries are needed always and which ones are optional.

Reference documentation contains plenty of advices about using JPA instead of deprecated legacy Hibernate annotations.

like image 33
Mikko Maunu Avatar answered Oct 07 '22 01:10

Mikko Maunu