Stop letting Hibernate generate your database schema. Learn a more robust approach, plus how to fix the N+1 problem and stream large datasets without memory issues.
#1about 6 minutes
Why you should use an ORM like Hibernate
Using an object-relational mapper (ORM) like Hibernate simplifies database access in Java by handling boilerplate code, type conversions, and transaction management that is complex with plain JDBC.
#2about 3 minutes
Mapping Java classes and the entity lifecycle
Entities move through transient, managed, and detached states, where changes to managed entities are automatically persisted to the database upon transaction commit.
#3about 2 minutes
Understanding Hibernate's caching layers
Hibernate uses a mandatory Level 1 cache scoped to the transaction to reduce database roundtrips, with an optional Level 2 cache for data shared across transactions.
#4about 3 minutes
Integrating Hibernate with Spring and Spring Data JPA
Spring Boot simplifies Hibernate configuration and transaction management, while Spring Data JPA further abstracts data access by generating repository implementations from interfaces.
#5about 3 minutes
Keeping your database schema in sync with Liquibase
Use a database migration tool like Liquibase and its diff plugin to automatically generate and apply schema changes based on your JPA entities, ensuring consistency.
#6about 3 minutes
Choosing an effective ID generation strategy
Client-generated UUIDs are often preferable to database auto-incrementing IDs because they are available before persistence and simplify data copying between environments.
#7about 3 minutes
Implementing equals and hashCode for JPA entities
Avoid using all properties in `equals` and `hashCode` for entities due to lazy loading and lifecycle issues; instead, base equality on the stable primary key.
#8about 5 minutes
Solving the N+1 query problem with join fetch
Prevent the N+1 query problem caused by lazy loading by using `JOIN FETCH` in your JPQL query to load related entities in a single database trip.
#9about 4 minutes
Processing large datasets with streaming and detaching
Handle large result sets efficiently by streaming data from the database and detaching processed entities from the session to prevent high memory consumption.
#10about 3 minutes
Managing transactions with external systems
Ensure data consistency with non-transactional systems like REST APIs by registering custom rollback actions using Spring's `TransactionSynchronizationManager`.
#11about 2 minutes
Automating actions with Hibernate entity listeners
Use Hibernate's entity listener hooks like `@PostPersist` and `@PostUpdate` to automatically trigger actions, such as sending messages to a message broker, when an entity changes.
#12about 16 minutes
Key takeaways for using Hibernate effectively
While Hibernate improves development efficiency, it is crucial to analyze the generated SQL, understand its internal workings, and recognize when it may not be the right tool for the job.
Related jobs
Jobs that call for the skills explored in this talk.
Matching moments
04:05 MIN
Overcoming the object-relational impedance mismatch
Databaseless Data Processing - High-Performance for Cloud-Native Apps and AI
05:51 MIN
Simplifying database persistence with Hibernate Panache
Quarkus. A Bliss for developers
03:22 MIN
Simplifying data access with the Jakarta Data specification
The Evolution of Enterprise Java with Jakarta EE 11 and Beyond
07:33 MIN
The object-relational impedance mismatch in persistence
Build ultra-fast In-Memory Database Apps and Microservices with Java
04:56 MIN
Exploring reactive data access and messaging options
Going reactive with Spring WebFlux
06:27 MIN
Q&A on framework support, Kotlin, and the JMM
Using Java 17 latest features in real world projects
06:05 MIN
Exploring the advantages of Jakarta EE's open standard
Increased Performance and Developer Productivity with Jakarta EE 11
02:33 MIN
Using virtual threads and the Quarkus Dev UI
Test-Driven Development: It's easier than you think!
Using Java 17 latest features in real world projectsWelcome to this issue of the WeAreDevelopers Live Talk series. This article recaps an interesting talk by Ron Veen who introduced the audience to some of the most interesting features that got added to the Java language.About the speaker:Ron is a hig...
Chris Heilmann
WeAreDevelopers LIVE days are changing - get ready to take partStarting with this week's Web Dev Day edition of WeAreDevelopers LIVE Days, we changed the the way we run these online conferences. The main differences are:Shorter talks (half an hour tops)More interaction in Q&AA tips and tricks "Did you know" sect...
Chris Heilmann
Processing 175 WeAreDeveloper World Congress talk videos in 5 hours - with PHP?Every year after the WeAreDevelopers World Congress is over, we have a ton of video footage to edit and release. Most of it is in raw format and needs editing by hand, but a lot of our sessions are also streamed live on YouTube and thus easier to re-...
Chris Heilmann
Dev Digest 109 -Egg-citing things…As we are heading into the Easter break, here are some things to spend some time on. There's resources on improving the performance of your code and you hear from the winners of CODE100 Amsterdam what it was like to be on stage. Also, hang tight as t...
From learning to earning
Jobs that call for the skills explored in this talk.