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-finally
Hibernate 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: