Are you struggling with performance issues in your Spring, Jakarta EE, or Java EE application?
What if there were a tool that could automatically detect what caused performance issues in your JPA and Hibernate data access layer?
Wouldn’t it be awesome to have such a tool to watch your application and prevent performance issues during development, long before they affect production systems?
Well, Hypersistence Optimizer is that tool! And it works with Spring Boot, Spring Framework, Jakarta EE, Java EE, Quarkus, Micronaut, or Play Framework.
So, rather than fixing performance issues in your production system on a Saturday night, you are better off using Hypersistence Optimizer to help you prevent those issues so that you can spend your time on the things that you love!
Spring Framework has revolutionized the Java Enterprise development, simplifying application testing and allowing flexible cross-cutting concerns using its Aspect-Oriented Programming support.
Here are some articles I wrote that cover various aspects of the Spring framework:
Configuration
- The best way to do the Spring 6 migration
- Spring Boot Application Properties
- Why I like Spring
@Autowired
forList
types - Why I like Spring bean aliasing
- The Builder pattern and the Spring framework
- Spring Load-Time Weaving
Logging
- Log SQL statements with Spring Boot
- How to find the source of an SQL query generated by Spring Data JPA
- Spring MDC Transaction Logging
Repositories
- The awesome
BaseJpaRepository
from Hypersistence Utils - The best way to write a custom Spring Data Repository
- How to write a custom Spring Data base Repository
- The best Spring Data JpaRepository
- The Spring Data JPA findAll Anti-Pattern
- The Spring Data JPA findById Anti-Pattern
- How to integrate Jakarta Data with Spring and Hibernate
Persistence Context
- The best way to use JPA bidirectional sync methods
- How to batch INSERT statements with MySQL and Hibernate
- How to cascade DELETE unidirectional associations with Spring Data JPA
- How to cascade DELETE unidirectional associations with Spring and Hibernate events
Queries
- The best way to use Spring Data query methods
- The best way to write a Spring Data Exists Query
- The best way to fix the
MultipleBagFetchException
with Spring Data JPA - The best way to use JOIN FETCH and Pagination with Spring
- The best way to use the Spring Data JPA Specification
- The best way to use Spring Data JPA Stream methods
- Spring Data Query By Example
- How to fetch multiple JPA collections with Blaze Persistence MULTISET
Projections and Pagination
- The best way to fetch a Spring Data JPA DTO Projection
- How to use Java Records with Spring Data JPA
- Keyset Pagination with Spring Data
WindowIterator
- Keyset Pagination with Spring
Schema Migrations
Entity Events
- Spring Data Hibernate Entity Listeners
- How to emulate
@CreatedBy
and@LastModifiedBy
from Spring Data using the@GeneratorType
Hibernate annotation
Transactions and Concurrency Control
- Spring Transaction and Connection Management
- The best way to use the Spring Transactional annotation
- How to use LazyConnectionDataSourceProxy with Spring Data JPA
- Spring Transaction Best Practices
- RESOURCE_LOCAL JPA Transaction Type
- JTA Transaction Type
- A beginner’s guide to transaction isolation levels in enterprise Java
- Read-write and read-only transaction routing with Spring
- Spring Data JPA entity locking
Caching
Audit Logging
Table partitioning
Best Practices
Performance Tuning and Scaling
- Custom Spring Boot Actuator Endpoint
- The best way to determine the optimal connection pool size
- Scaling a Spring application with a YugabyteDB cluster
- Spring Boot performance tuning
- Why you should always use
hibernate.connection.provider_disables_autocommit
for resource-local JPA transactions - Spring Boot performance monitoring
- Fault Tolerance with Spring Data and YugabyteDB
- Spring read-only transaction Hibernate optimization
- Tuning Spring Petclinic JPA and Hibernate configuration with Hypersistence Optimizer
- PostgreSQL Performance Tuning Settings
- MySQL Performance Tuning with Releem
Testing
- The best way to test the data access layer
- How to tunnel localhost to the public Internet
- Testcontainers Database Integration Testing
