High-Performance Java Persistence
The High-Performance Java Persistence training is aimed to level up your team’s data access skills, covering JDBC, Hibernate, and many database essential topics for Oracle, SQL Server, MySQL or PostgreSQL.
The full training spans 3 days, but it can be adapted to a 1-day or a 2-day workshop as well.
Introduction – 2h
- O/R Mismatch
- JPA vs. Hibernate
- Schema ownership and incremental migrations
- Effective integration testing strategies
- Hibernate Connection Management – 2h
- Connection Providers
- Connection Monitoring
- Statement Logging and the statement count validator
- Basic Mappings – 2h
- JPA Identifiers
- Legacy and enhanced identifier generators (hilo, pooled, pooled-lo)
- Relationships – 2h
Inheritance – 2h
- Composition vs. inheritance
- Single table inheritance
- Joined table inheritance
- Table-per-class inheritance
- Mapped superclass
- Entity state transitions – 2h
- Flushing basics
- AUTO flush caveats
- Dirty checking
- ActionQueue and flush operation order
- Bytecode enhancement dirty checking
- Batch updates and Statement Caching – 2h
- JDBC batching
- How to batch INSERT, UPDATE, and DELETE statements
- Server-side and client-side Statement Caching
- Fetching – 2h
- Natural key
- DTO projections
- Entity queries
- LAZY vs. EAGER
- Query-time fetching
- Pagination queries
Concurrency control – 4h
- Phenomena (Dirty Write, Dirty Read, Non-Repeatable Read, Phantom Read, Read Skew, Write Skew, Lost Updates)
- 2PL (Two-Phase Locking)
- MVCC (Multi-Version Concurrency Control)
- Isolation levels and database concurrency control
- Logical vs. physical clock optimistic locking
- Versionless optimistic locking
- JPA physical and optimistic lock types (OPTIMISTIC, OPTIMISTIC_FORCE_INCREMENT, PESSIMISTIC_FORCE_INCREMENT, PESSIMISTIC_READ, PESSIMISTIC_WRITE)
- Skip locked and queueing access
- Preventing lost updates in long conversations
- Caching – 4h
- Database caching
- Application-level caching
- Second-level caching
- Cache synchronization strategies
- Cache concurrency strategies (READ_ONLY, NONSTRICT_READ_WRITE, READ_WRITE, TRANSACTIONAL)
- Collection Cache
- Query Cache
If you want to book an on-site training, you should contact me to talk it through.
Call Trade, Switzerland
Just completed an intensive 3 day seminar with @vlad_mihalcea about high performance java persistance. Highly recommended. Thanks Vlad!—
Urs Joss (@usi15) March 15, 2017
NTT DATA, Romania
As Java developers, we all use JPA and inherently Hibernate at one point in time in our projects. Sometimes it happens that some of us just use and abuse this technology.
The presentation has the right topics, order and proper information to get the beginners and the “lost” intermediate user on the right track. You are a senior, and you wonder if it’s the right thing for you? Well, you can get under the hood and understand the underlying mechanisms and implementations used throughout the framework. Moreover, you will learn about advanced topics like caching, locking mechanisms and concurrency control.
I strongly believe that this is a great all-around training when it comes to ORM concepts.
Előd Balázs, Operations Manager at NTT DATA Romania
Every time I had heard that some app needs to be fast, I would have run away from Hibernate. Well, not anymore! After attending Vlad’s High-Performance Java Persistence course, I changed my mind.
It was well structured, focused on performance and day-to-day usage. There were lots of details and small things that can really make a huge difference.
Everything was backed up by code examples. Vlad is a smart guy with lots of patience, and he’s passionate about technology.
Learn the power of Hibernate! Use it properly!
Sergiu Oltean, Java Developer
Arobs Transilvania Software, Romania
I actually feel that I had a great opportunity to have Vlad and his experience on-premise for an intensive training (covered with clear examples and explanations) of what Java Persistence is now.
A couple of years ago was, it was simple, few tables and hundred thousand rows. Now persistence metrics (counts) are represented with 10^6+.
The training provided and following Vlad’s blog is truly a gold vein in our mining activity of providing effective, efficient, and maintainable applications.
Vasile Mihali, Java Developer
3Pillar Global, Romania
I’ve been using Hibernate for over 8 years in various projects, and I was thinking “what’s more to learn about it?”. Well, it turns out I was wrong. I’ve learned a lot after attending Vlad’s training.
It was a very educative and enlightening course, backed up by a lot of code samples, answered questions, do’s and don’ts in the Hibernate world. There’s a huge difference between using Hibernate and using it right.
Mihai Costin, Senior Software Engineer