Hibernate ako implementácia JPA umožňuje jednoduché mapovanie objektov na databázové tabuľky. Každá trieda reprezentuje entitu, ktorú anotujeme:
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "username", nullable = false)
private String username;
@Column(name = "email")
private String email;
}
@Entity označuje, že ide o JPA entitu. @Table špecifikuje tabuľku, @Column stĺpec, @Id primárny kľúč a @GeneratedValue spôsob generovania ID.
Konfiguračný súbor persistence.xml sa nachádza v META-INF adresári a definuje názov persistence jednotky, ovládač, URL databázy a používateľa:
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.1">
<persistence-unit name="MyPU">
<class>com.example.User</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/testdb"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="1234"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect"/>
</properties>
</persistence-unit>
</persistence>
Hibernate poskytuje základné CRUD operácie cez EntityManager:
User user = new User();
user.setUsername("jano");
user.setEmail("jano@example.com");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.persist(user);
em.getTransaction().commit();
em.close();
Je dôležité nezabudnúť zatvárať EntityManager a ukončiť transakciu, inak dôjde k úniku zdrojov. V REST aplikáciách sa odporúča otvoriť spojenie len na čas spracovania požiadavky.
Best practices:
try-finallyHibernate obsahuje dve úrovne cache:
Pre zvýšenie výkonu odporúčame:
@NamedQuery alebo Criteria API pre optimalizované dotazyfetch = EAGER na minimumVšetko si prakticky vyskúšate v kurze Java REST služby s Hibernate, kde vytvoríte REST API, napojíte ho na databázu pomocou JPA a naučíte sa optimalizovať výkon a bezpečne spravovať spojenia.
Viac informacií preberáme na kurze: