Hibernate Annotations
A sample code to use Hibernate in Annotations mode
- JavaSE 8
- Hibernate 5 / Annotations
- Maven 4
- MySQL 5
We will use the same database / table
<dependencies>
<!-- MySQL connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.11.Final</version>
</dependency>
</dependencies>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- MySQL -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/persist_db?useTimezone=true&serverTimezone=UTC</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property>
<!-- Hibernate -->
<property name="show_sql">true</property>
<property name="format_sql">false</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- Entities -->
<mapping class="net.isetjb.hibernatetutorial3.Product"/>
</session-factory>
</hibernate-configuration>
- hibernate.hbm2ddl.auto : update => update the database schema with defined entities
- hibernate.hbm2ddl.auto : create => creates the schema necessary for defined entities, destroying any previous data
There is no "Product.hbm.xml" mapping file. To do mapping we will use Hibernate Annotations instead
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "product")
public class Product
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private int id;
@Column(name = "name", length = 255, nullable = true)
private String name;
@Column(name = "price", nullable = true)
private int price;
// GETTERs and SETTERs here...
}
- @Entity : link to the "Product" class (Bean / POJO)
- @Table : table that will be used to persist the entity in the database
- @Id : primary key
- @GeneratedValue : generation type for the primary key (ex : AUTO_INCREMENT in MySQL)
- @Column : details of the column to which a property will be mapped
Use exactly "Application.java" in Tutorial 2 to test