Hibernate umožňuje snadné mapování tříd na databázové tabulky pomocí JPA anotací:
@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; }
Soubor persistence.xml
definuje konfiguraci JPA:
<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>
EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); User u = new User(); u.setUsername("petr"); em.persist(u); em.getTransaction().commit(); em.close();
U REST služeb je klíčové správně spravovat EntityManager a transakce:
try-catch-finally
First-level cache je aktivní automaticky pre session. Second-level cache (např. Ehcache) je volitelná a zvyšuje výkon ve větších aplikacích.
Doporučení:
fetch = EAGER
– způsobuje pomalé dotazyJOIN FETCH
při potřebě vícero entitVše se naučíte v kurzu Java REST služby s Hibernate, kde si vytvoříte REST API, připojíte ho na databázi a naučíte se správu transakcí i optimalizaci výkonu.
Viac informacií preberáme na kurze: