
Arnold guides you through advanced Hibernate features and its Spring integration, tackling concurrency and query optimization with hands-on coding and practical use cases.
Explore hibernate entity states and transitions, including new and removed states, and learn when to use or avoid the merge operation to optimize transactions and data access.
Experiment with entity transitions in a spring boot gradle project by adjusting the product service or repository to satisfy the tests for attribute updates and minimal query counts.
Examine eagerly loaded and lazy loaded relationships, the SQL these generate, and how fetch joins and related strategies influence Hibernate and JPA queries, prepping for the next module.
The lecture explains eager fetching in a one-to-many relation, showing how loading a parent can fetch children, and warns about performance issues, urging careful use of lazy loading and projections.
Diagnose lazy initialization exceptions by loading lazily loaded relationships outside a transaction, and explore fixes such as enabling temporary transactions, managing transactions, and rethinking transaction boundaries.
The module recap explains how projections limit data in standard sql and criteria api queries, using Spring Data projections. It emphasizes reduced data transfer and memory use, noting covering indices.
Describe explicit optimistic locking in Hibernate, using lock mode and lock calls to enforce a version check and optional version increment. Compare normal optimistic lock with optimistic force increment.
Recap key concurrency strategies in Hibernate with Spring, including optimistic and pessimistic locking. Examine last update anomalies, version-based and version-less optimistic locking, and parameters of pessimistic locks.
Understand how auto mode flushes pending changes before queries and before committing transactions. In comet mode, changes flush only before commit, and native queries may run without an earlier flush.
Explore Hibernate 5.2 statement batching with a global batch size in Spring, and see how flush affects batch composition and the importance of correct batching configuration.
There are several courses out there targeting basic Hibernate use-cases. This course is different. The goal is to bridge the gap of the basics and the complicated features of the framework.
During the recent years, the IT industry has moved so fast that it's really hard to keep track of it, and I with all the more and more complicated products to be developed, it's critical to understand more advanced features of Hibernate and JPA to be able to support these asks from a development standpoint.
Spring is one of the most frequent framework that is used within the IT industry. I amm going to take this learning experience even further by connecting the dots between Hibernate and Spring, focusing on specific and complex use-cases.
In the course the following topics will be covered:
Entity-state transition pitfalls with merging
The performance aspect of lazy loading data
DTO projections and the positive performance impact
Using covering indices with Hibernate
Flushing fine-tuning
Concurrency-control in depth
Statement batching in detail with optimizations
This is a course tailored specifically for you in order to improve your skills and move your career forward as a professional engineer.
Note that the course does not cover the basics of JPA and Hibernate but assumes that the foundation is already there.
The training also includes a number of practices after almost each section which you can use to polish your skills, and to make sure you understood the specific block.