Vlad Mihalcea
Hi! My name is Vlad Mihalcea, and I’m a Java Champion. I wrote the High-Performance Java Persistence book, which became one of the best-selling Java books on Amazon.I'm currently developing the amazing Hypersistence Optimizer, and in my free time, I develop various open-source projects (e.g. Hypersi
Java / JVMDatabasesPerformance / optimizationEngineering blogs
- Posts
- 635 from 30 Sep 2013 to 23 Oct 2026
- Posting
- monthly (9 in the last year)
- Kind
- personal blog
- Feed
- https://vladmihalcea.com/feed/
2026 6
2025 10
- The best way to replace the deprecated GenericGenerator
- Book Review – Just Use Postgres!
- The best way to clean up test data with Spring and Hibernate
- Book Review – Troubleshooting Java
- Twelve years of blogging
- MySQL Query Optimization with Releem
- Foundations of AI and Machine Learning for Java Developers Course Review
- How to map the Oracle TIMESTAMP WITH TIME ZONE with JPA
- MySQL Performance Tuning with Releem
- Why you should use compact table columns
2024 45
- High-Performance Java Persistence Newsletter, Issue 69
- Avoid using Set for bidirectional JPA OneToMany collections
- JTA Transaction Type
- The best way to determine the optimal connection pool size
- High-Performance Java Persistence Newsletter, Issue 68
- How to use LazyConnectionDataSourceProxy with Spring Data JPA
- RESOURCE_LOCAL JPA Transaction Type
- High-Performance Java Persistence Newsletter, Issue 67
- Eleven years of blogging
- Keyset Pagination with Spring Data WindowIterator
- A beginner’s guide to Spring Data Envers
- Embeddable Inheritance with JPA and Hibernate
- High-Performance Java Persistence Newsletter, Issue 66
- Custom Spring Boot Actuator Endpoint
- How to integrate Jakarta Data with Spring and Hibernate
- High-Performance Java Persistence Newsletter, Issue 65
- Hibernate SoftDelete annotation
- How to use symbolic links to move the DB data folder
- Book Review – Beginning Helidon
- High-Performance Java Persistence Newsletter, Issue 64
- How to map Java Enum to custom values with JPA and Hibernate
- How does the Hibernate JAVA_TIME_USE_DIRECT_JDBC setting work
- Hibernate WITH RECURSIVE query
- High-Performance Java Persistence Newsletter, Issue 63
- Hibernate ON CONFLICT DO clause
- PostgreSQL COPY result set to file
- PostgreSQL plan_cache_mode
- Overriding FetchType.EAGER with fetchgraph
- High-Performance Java Persistence Newsletter, Issue 62
- The best way to use the JPA OneToOne optional attribute
- How to calculate percentiles with SQL PERCENTILE_CONT
- PostgreSQL FOR UPDATE vs FOR NO KEY UPDATE
- High-Performance Java Persistence Newsletter, Issue 61
- PostgreSQL Heap-Only-Tuple or HOT Update Optimization
- PostgreSQL Index Types
- High-Performance Java Persistence Newsletter, Issue 60
- How to map the OffsetDateTime ZoneOffset with Hibernate TimeZoneColumn
- How to use Java Records with Spring Data JPA
- PostgreSQL Performance Tuning Settings
- Hibernate StatelessSession JDBC Batching
- High-Performance Java Persistence Newsletter, Issue 59
- Fetching recursive associations with JPA and Hibernate
- How to use the Java CountDownLatch
- The best way to test the data access layer
- High-Performance Java Persistence Newsletter, Issue 58
2023 51
- Hibernate StatelessSession Upsert
- The best way to map multiple entities on the same table
- Spring Load-Time Weaving
- High-Performance Java Persistence Newsletter, Issue 57
- Index Selectivity
- How to cascade DELETE with Spring and Hibernate events
- Table partitioning with Spring and Hibernate
- High-Performance Java Persistence Newsletter, Issue 56
- How to cascade DELETE unidirectional associations with Spring Data JPA
- How to batch INSERT statements with MySQL and Hibernate
- The best way to use Spring Data JPA Stream methods
- High-Performance Java Persistence Newsletter, Issue 55
- Ten years of blogging
- How to find the source of an SQL query generated by Hibernate
- How to fetch multiple JPA collections with Blaze Persistence MULTISET
- High-Performance Java Persistence Newsletter, Issue 54
- PostgreSQL JDBC Statement Caching
- The best way to hide the JPA entity identifier
- The best way to use JPA bidirectional sync methods
- SQL Server useBulkCopyForBatchInsert configuration property
- High-Performance Java Persistence Newsletter, Issue 53
- JDBC Profiling with VisualVM
- Soft delete and JPA version property
- How to customize the HibernateTypesContributor from Hypersistence Utils
- High-Performance Java Persistence Newsletter, Issue 52
- Spring Data Query By Example
- How to fetch multiple to-many relationships with jOOQ MULTISET
- The best way to use one-to-one table relationships
- The best way to validate the DDL schema with Spring and Hibernate
- High-Performance Java Persistence Newsletter, Issue 51
- Cache synchronization using jOOQ and PostgreSQL functions
- SQL Operation Order
- Hibernate default entity sequence
- High-Performance Java Persistence Newsletter, Issue 50
- Spring Transaction and Connection Management
- The best way to call SQL Server stored procedures with jOOQ
- PostgreSQL Auto Explain
- High-Performance Java Persistence Newsletter, Issue 49
- The best way to use the Spring Data JPA Specification
- The best way to use JOIN FETCH and Pagination with Spring
- The best way to use Spring Data query methods
- The best way to use SQL NOWAIT
- High-Performance Java Persistence Newsletter, Issue 48
- YugabyteDB Architecture
- The best way to generate a TSID entity identifier with JPA and Hibernate
- Fault Tolerance with Spring Data and YugabyteDB
- High-Performance Java Persistence Newsletter, Issue 47
- Scaling a Spring application with a YugabyteDB cluster
- The awesome BaseJpaRepository from Hypersistence Utils
- YugabyteDB Connection Pooling
- High-Performance Java Persistence Newsletter, Issue 46
2022 52
- From Hibernate Types to Hypersistence Utils
- Spring MDC Transaction Logging
- Spring Data Hibernate Entity Listeners
- The best UUID type for a database Primary Key
- High-Performance Java Persistence Newsletter, Issue 45
- The best way to use UNION, INTERSECT, and EXCEPT with Hibernate
- The best way to do the Spring 6 migration
- The Spring Data JPA findById Anti-Pattern
- Spring Data JPA entity locking
- High-Performance Java Persistence Newsletter, Issue 44
- Building a Distributed Audit Log with YugabyteDB
- How to write a custom Spring Data Base Repository
- YugabyteDB column-level locking
- High-Performance Java Persistence Newsletter, Issue 43
- Nine years of blogging
- Strong Consistency with YugabyteDB
- The Spring Data findAll Anti-Pattern
- A beginner’s guide to YugabyteDB
- High-Performance Java Persistence Newsletter, Issue 42
- The best way to fetch a Spring Data JPA DTO Projection
- How to use different Java versions for main and test in Maven
- Testcontainers Database Integration Testing
- MySQL rewriteBatchedStatements configuration property
- High-Performance Java Persistence Newsletter, Issue 41
- The best way to map MonetaryAmount with JPA and Hibernate
- Maximum number of database connections
- High-Performance Java Persistence Newsletter, Issue 40
- Spring Data JPA MultipleBagFetchException
- Spring Transaction Best Practices
- The race condition that led to Flexcoin bankruptcy
- The best Spring Data JpaRepository
- High-Performance Java Persistence Newsletter, Issue 39
- Java data access technology survey results
- The best way to configure the Hibernate Dialect
- The best way to use the Hibernate TupleTransformer
- High-Performance Java Persistence Newsletter, Issue 38
- Hibernate SQM – Semantic Query Model
- Hibernate and JPQL Window Functions
- High-Performance Java Persistence Newsletter, Issue 37
- How to format SQL using the command line
- Java application performance tuning using Lightrun
- JPA Association Fetching Validator
- Lightrun – the best way to debug production problems
- High-Performance Java Persistence Newsletter, Issue 36
- The best way to write a Spring Data Exists Query
- A beginner’s guide to Serializability
- Spring Boot Application Properties
- High-Performance Java Persistence Newsletter, Issue 35
- How to write EXISTS subqueries with JPA and Hibernate
- The best way to use the Spring Transactional annotation
- The best way to handle time zones in a Java web application
- High-Performance Java Persistence Newsletter, Issue 34
2021 51
- Keyset Pagination with Spring
- The best way to write a custom Spring Data Repository
- Default Database Primary, Foreign, and Unique Key Indexing
- The best way to log SQL statements with Spring Boot
- High-Performance Java Persistence Newsletter, Issue 33
- RevoGain Software Architecture
- How to tunnel localhost to the public Internet
- How to create a tech startup
- High-Performance Java Persistence Newsletter, Issue 32
- How to map polymorphic JSON objects with JPA and Hibernate
- Hibernate Batch Sequence Generator
- The JPA and Hibernate second-level cache
- High-Performance Java Persistence Newsletter, Issue 31
- Eight years of blogging
- SQL Recursive WITH CTE queries
- JPA Bulk Update and Delete with Blaze Persistence
- SQL CROSS APPLY – A Beginner’s Guide
- High-Performance Java Persistence Newsletter, Issue 30
- SQL Derived Table or Inline View
- SQL CTE – Common Table Expression
- Keyset Pagination with JPA and Hibernate
- High-Performance Java Persistence Newsletter, Issue 29
- SQL Seek Method or Keyset Pagination
- Blaze Persistence – The Best Way to Write JPA Criteria Queries
- High-Performance Java Persistence Newsletter, Issue 28
- Hibernate Physical Naming Strategy
- 9 High-Performance Tips when using Oracle with JPA and Hibernate
- Hibernate Application Performance Tuning
- High-Performance Java Persistence Newsletter, Issue 27
- Use Hibernate Dynamic Update for JSON properties
- 20 years of Hibernate
- JPA Entity Graph
- SQL Server Foreign Key Locking
- High-Performance Java Persistence Newsletter, Issue 26
- How to index JSON columns using MySQL
- Clustered Index
- SQL Server JDBC – Set sendStringParametersAsUnicode to false
- High-Performance Java Persistence Newsletter, Issue 25
- SQL Server deadlock trace flags
- Optimistic vs. Pessimistic Locking
- JPA Default Fetch Plan
- High-Performance Java Persistence Newsletter, Issue 24
- Merge Join Algorithm
- MySQL Query Profiling Using Performance Schema
- SQL Server OPENJSON – Map JSON to a relational table
- Hash Join Algorithm
- High-Performance Java Persistence Newsletter, Issue 23
- Nested Loop Join Algorithm
- Connection Monitoring with JPA and Hibernate
- Maven and Gradle Hibernate Enhance Plugin
- Hibernate LazyToOne annotation
2020 72
- High-Performance Java Persistence Newsletter, Issue 22
- How to get a JSON property value using PostgreSQL
- MySQL JDBC Statement Caching
- SQL LATERAL JOIN – A Beginner’s Guide
- High-Performance Java Persistence Newsletter, Issue 21
- Percona PMM – A beginner’s guide
- The best way to get more Twitter followers
- Mapping Java Records to JSON columns using Hibernate
- SQL Server audit logging using triggers
- High-Performance Java Persistence Newsletter, Issue 20
- The JPA and Hibernate first-level cache
- MySQL JSON_TABLE – Map a JSON object to a relational database table
- 60 years of COBOL – past, present, and future
- High-Performance Java Persistence Newsletter, Issue 19
- Hibernate Session doWork and doReturningWork methods
- Seven years of blogging
- High-Performance Java Persistence Newsletter, Issue 18
- Spring Boot performance monitoring
- Why and when you should use JPA
- High-Performance Java Persistence Newsletter, Issue 17
- Hibernate hbm2ddl.auto schema generation
- How to encrypt and decrypt JSON properties with JPA
- High-Performance Java Persistence Newsletter, Issue 16
- PostgreSQL audit logging using triggers
- SQL ANY Operator – A Beginner’s Guide
- High-Performance Java Persistence Newsletter, Issue 15
- Bulk Update and Delete with JPA and Hibernate
- JPA AttributeConverter – A Beginner’s Guide
- High-Performance Java Persistence Newsletter, Issue 14
- MySQL audit logging using triggers
- SQL JOIN USING – A Beginner’s Guide
- SQL LEFT JOIN – A Beginner’s Guide
- How does orphanRemoval work with JPA and Hibernate
- High-Performance Java Persistence Newsletter, Issue 13
- Flyway Database Schema Migrations
- Java Map to JSON mapping with JPA and Hibernate
- High-Performance Java Persistence Newsletter, Issue 12
- Read-write and read-only transaction routing with Spring
- JPA and Hibernate Query setParameter – User Guide
- High-Performance Java Persistence Newsletter, Issue 11
- How to get the SQL query from JPQL or JPA Criteria
- Single-Primary Database Replication
- High-Performance Java Persistence Newsletter, Issue 10
- How to generate JPA entity identifier values using a database sequence
- How to fetch a one-to-many DTO projection with JPA and Hibernate
- High-Performance Java Persistence Newsletter, Issue 9
- ManyToOne JPA and Hibernate association best practices
- How to map Date and Timestamp with JPA and Hibernate
- High-Performance Java Persistence Newsletter, Issue 8
- The best way to use Java Records with JPA and Hibernate
- Java Records – A Beginner’s Guide
- High-Performance Java Persistence Newsletter, Issue 7
- SQL INNER JOIN – A Beginner’s Guide
- JPA Criteria Metamodel Generation and Usage Guide
- High-Performance Java Persistence Newsletter, Issue 6
- The best way to use the JPA SqlResultSetMapping
- N+1 query problem with JPA and Hibernate
- High-Performance Java Persistence Newsletter, Issue 5
- A beginner’s guide to JPA persistence.xml file
- Multiline String literals with Java Text Blocks
- High-Performance Java Persistence Newsletter, Issue 4
- Hibernate slow query log
- Hypersistence Optimizer Runtime Scanner
- High-Performance Java Persistence Newsletter, Issue 3
- PostgreSQL triggers and isolation levels
- How to map a PostgreSQL ARRAY to a Java List with JPA and Hibernate
- High-Performance Java Persistence Newsletter, Issue 2
- SQL EXISTS and NOT EXISTS
- How to return a Map result from a JPA or Hibernate query
- High-Performance Java Persistence Newsletter, Issue 1
- Multidimensional array mapping with JPA and Hibernate
- The best way to use a Hibernate ResultTransformer
2019 49
- The best way to prevent JPA and Hibernate performance issues
- How to migrate the hilo Hibernate identifier optimizer to the pooled strategy
- SQL CROSS JOIN – A Beginner’s Guide
- How does the 2PL (Two-Phase Locking) algorithm work
- Bulk update optimistic locking with JPA and Hibernate
- PostgreSQL trigger consistency check
- The best way to fix the Hibernate MultipleBagFetchException
- Spring Boot performance tuning
- A beginner’s guide to database deadlock
- The best way to fetch multiple entities by id using JPA and Hibernate
- How to map SQL Server JSON columns using JPA and Hibernate
- JDBC Driver Maven dependency list
- Six years of blogging
- How to get the query execution plan on SQL Server
- How to map Oracle JSON columns using JPA and Hibernate
- How to write a compact DTO projection query with JPA
- How to get the SQL execution plan on Oracle
- Mapping PostgreSQL Interval to Java Duration with Hibernate
- How to map multiple JPA entities to one database table with Hibernate
- How to limit the SQL query result set to Top-N rows only
- How to write JPA Criteria API queries using Codota
- Pagination best practices
- SQL ORDER BY RANDOM
- How to override the default Hibernate Session FlushMode
- Query timeout with JPA and Hibernate
- MySQL 8 support for custom SQL CHECK constraints
- A beginner’s guide to JPA and Hibernate query hints
- The best way to map an entity version property with JPA and Hibernate
- Optimistic locking with JPA and Hibernate
- Tuning Spring Petclinic JPA and Hibernate configuration with Hypersistence Optimizer
- How to intercept and modify SQL queries with the Hibernate StatementInspector
- How to detect HHH000104 issues with hibernate.query.fail_on_pagination_over_collection_fetch
- How to expose Hibernate Statistics via JMX
- A beginner’s guide to Hibernate Statistics
- A beginner’s guide to database table relationships
- How to implement a database job queue using SKIP LOCKED
- How to change the @OneToOne shared primary key column name with JPA and Hibernate
- How does a relational database execute SQL statements and prepared statements
- Hypersistence Optimizer initial release
- Why you should avoid EXTRA Lazy Collections with Hibernate
- How does the entity version property work when using JPA and Hibernate
- How do JPA persist, merge and Hibernate save, update, saveOrUpdate methods work
- How to log the database transaction id using MDC
- The best way to call a stored procedure with JPA and Hibernate
- How to map a String JPA property to a JSON column using Hibernate
- How to escape SQL reserved keywords with JPA and Hibernate
- How to map a PostgreSQL Range column type with JPA and Hibernate
- How to get the current database transaction id
- How to map a PostgreSQL HStore entity property with JPA and Hibernate
2018 54
- How to map a PostgreSQL Enum ARRAY to a JPA entity property using Hibernate
- How to bind custom Hibernate parameter types to JPA queries
- How to intercept entity changes with Hibernate event listeners
- The best way to initialize LAZY entity and collection proxies with JPA and Hibernate
- Three years as a Hibernate Developer Advocate
- How to execute SQL functions with multiple parameters in a JPQL query with Hibernate
- The best way to use the JPQL DISTINCT keyword with JPA and Hibernate
- How to map camelCase properties to snake_case column names with Hibernate
- How to optimize JPQL and Criteria API query plans with Hibernate Statistics
- How to merge entity collections with JPA and Hibernate
- How to map java.time Year and Month with JPA and Hibernate
- How to map the Java YearMonth type with JPA and Hibernate
- Query pagination with JPA and Hibernate
- Five years of blogging
- Spring read-only transaction Hibernate optimization
- Hibernate performance tuning tips
- How to map the PostgreSQL inet type with JPA and Hibernate
- The best way to clone or duplicate an entity with JPA and Hibernate
- Hibernate database schema multitenancy
- How to fix the Hibernate “No Dialect mapping for JDBC type” issue
- Hibernate database catalog multitenancy
- How to query by entity type using JPA Criteria API
- A beginner’s guide to database multitenancy
- How to query parent rows when all children must match the filtering criteria with SQL and Hibernate
- The best way to use SQL functions in JPQL or Criteria API queries with JPA and Hibernate
- A beginner’s guide to the Hibernate JPQL and Native Query Plan Cache
- A beginner’s guide to Phantom Read anomaly
- How do find and getReference EntityManager methods work when using JPA and Hibernate
- A beginner’s guide to Non-Repeatable Read anomaly
- MariaDB 10.3 supports database sequences
- How to improve statement caching efficiency with IN clause parameter padding
- A beginner’s guide to Dirty Read anomaly
- A beginner’s guide to Linearizability
- How to synchronize bidirectional entity associations with JPA and Hibernate
- How to use @PrePersist and @PreUpdate on Embeddable with JPA and Hibernate
- How to avoid the Hibernate Query Cache N+1 issue
- 9 High-Performance Tips when using PostgreSQL with JPA and Hibernate
- PostgreSQL reWriteBatchedInserts configuration property
- How to map an immutable entity with JPA and Hibernate
- PostgreSQL SERIAL or IDENTITY column and Hibernate IDENTITY generator
- How to customize the Hypersistence Utils JSON Serializer
- How to use a JVM or database auto-generated UUID identifier with JPA and Hibernate
- How to use database-specific or Hibernate-specific features without sacrificing portability
- How to customize the Hypersistence Utils Jackson ObjectMapper
- How to get the actual execution plan for an Oracle SQL query using Hibernate query hints
- How to map a JPA entity to a View or SQL query using Hibernate
- How to cache non-existing entity fetch results with JPA and Hibernate
- JDBC Driver Connection URL strings
- How to use the Hibernate Query Cache for DTO projections
- A beginner’s guide to the high-performance-java-persistence GitHub repository
- FlexyPool 2 has been released
- Hibernate HSQLDB ARRAY Type
- JPA Criteria API Bulk Update and Delete
- Upgrading to WordPress.com Business Plan
2017 65
- How to map a JSON collection using JPA and Hibernate
- How to bootstrap JPA programmatically without the persistence.xml configuration file
- How to order entity subclasses by their class type using JPA and Hibernate
- Two years as a Hibernate Developer Advocate
- How to become a Java Champion
- How to map a JPA @ManyToOne relationship to a SQL query using the Hibernate @JoinFormula annotation
- How to audit entity modifications using the JPA @EntityListeners, @Embedded, and @Embeddable annotations
- How to emulate @CreatedBy and @LastModifiedBy from Spring Data using the @GeneratorType Hibernate annotation
- How to inherit properties from a base class entity using @MappedSuperclass with JPA and Hibernate
- How do UPSERT and MERGE work in Oracle, SQL Server, PostgreSQL and MySQL
- The best way to map a @NaturalId business key with JPA and Hibernate
- How does Hibernate handle JPA Criteria API literals
- 9 High-Performance Tips when using MySQL with JPA and Hibernate
- How to JOIN unrelated entities with JPA and Hibernate
- How to solve the PostgreSQL :: cast operator issue with JPA and Hibernate
- Four years of blogging
- The hibernate-types open-source project is born
- The best way to map an Enum Type with JPA and Hibernate
- The best way to fix the Hibernate “firstResult/maxResults specified with collection fetch; applying in memory!” warning message
- Why you should definitely learn SQL Window Functions
- How to map a composite identifier using an automatically @GeneratedValue with JPA and Hibernate
- The best way to map a projection query to a DTO (Data Transfer Object) with JPA and Hibernate
- How to get the entity mapping to database table binding metadata from Hibernate
- The best way to implement an audit log using Hibernate Envers
- How to map a @ManyToOne association using a non-Primary Key column with JPA and Hibernate
- How to store schema-less EAV (Entity-Attribute-Value) data using JSON and Hibernate
- How to optimize the merge operation using update while batching with JPA and Hibernate
- The best way to map a JPA and Hibernate many-to-many association with extra columns
- How to extract change data events from MySQL to Kafka using Debezium
- Book Review – High Performance MySQL (3rd edition)
- What’s new in JPA 2.2 – Stream the result of a Query execution
- A beginner’s guide to CDC (Change Data Capture)
- What’s new in JPA 2.2 – Java 8 Date and Time Types
- How to map Java and SQL arrays with JPA and Hibernate
- The best way to map the @DiscriminatorColumn with JPA and Hibernate
- The best way to use entity inheritance with JPA and Hibernate
- The best way to map the SINGLE_TABLE inheritance with JPA and Hibernate
- How to fix “wrong column type encountered” schema-validation errors with JPA and Hibernate
- The fastest way to update a table row when using Hibernate and Oracle
- Why you should always use hibernate.connection.provider_disables_autocommit for resource-local JPA transactions
- Best way to map the JPA and Hibernate ManyToMany relationship
- How to install DB2 Express-C on Docker and set up the JDBC connection properties
- How to get access to database table metadata with Hibernate 5
- The best way to do batch processing with JPA and Hibernate
- How does a JPA Proxy work and how to unproxy it with Hibernate
- How do PostgreSQL advisory locks work
- How to get started with CockroachDB
- 2 best tools that can help you solve ANY software development problem
- Why you should use the Hibernate ResultTransformer to customize result set mappings
- The best way to map a @OneToMany relationship with JPA and Hibernate
- How to find which statement failed in a JDBC Batch Update
- How to store date, time, and timestamps in UTC time zone with JDBC and Hibernate
- The best way to soft delete with Hibernate
- How does MVCC (Multi-Version Concurrency Control) work
- How to encrypt and decrypt data with Hibernate
- How to map the latest child of a parent entity using Hibernate JoinFormula
- How does a relational database work
- How to run integration tests at warp speed using Docker and tmpfs
- How does database pessimistic locking interact with INSERT, UPDATE, and DELETE SQL statements
- A beginner’s guide to the Write Skew anomaly, and how it differs between 2PL and MVCC
- The problem of AUTO JPA GenerationType with MySQL and Hibernate
- The JPA EntityManager createNativeQuery is a Magic Wand
- How to replace the TABLE identifier generator with either SEQUENCE or IDENTITY in a portable way
- Book Review – SQL Antipatterns
- Why you should never use the TABLE identifier generator with JPA and Hibernate
2016 54
- How to map table rows to columns using SQL PIVOT or CASE expressions
- Book Review – Designing Data-Intensive Applications
- The performance penalty of Class.forName when parsing JPQL and Criteria queries
- How to customize an entity association JOIN ON clause with Hibernate @JoinFormula
- One year as a Developer Advocate
- How to map calculated properties with Hibernate @Generated annotation
- How does MySQL result set streaming perform vs fetching the whole JDBC ResultSet at once
- How to map calculated properties with JPA and Hibernate @Formula annotation
- The print version of High-Performance Java Persistence
- A beginner’s guide to SQL injection and how you should prevent it
- How to call MySQL stored procedures and functions with JPA and Hibernate
- How to resolve the Hibernate global database schema and catalog for native SQL queries
- The best way to implement equals, hashCode, and toString with JPA and Hibernate
- How to use external XML mappings files (outside of JAR) with JPA and Hibernate
- How to update only a subset of entity attributes using JPA and Hibernate @DynamicUpdate
- The best way to map a Java 1.8 Optional entity attribute with JPA and Hibernate
- Three years of blogging
- How to customize the JDBC batch size for each Persistence Context with Hibernate
- How to implement a custom basic type using Hibernate UserType
- The best way to lazy load entity attributes using JPA and Hibernate
- The best way to handle the LazyInitializationException
- The hibernate.enable_lazy_load_no_trans Anti-Pattern
- How to increment the parent entity version whenever a child entity gets modified with JPA and Hibernate
- High-Performance Java Persistence – Part Three
- JPA providers market share in 2016
- Fluent API entity building with JPA and Hibernate
- The best way to map a Composite Key with JPA and Hibernate
- The best way to map a @OneToOne relationship with JPA and Hibernate
- How do persist and merge work in JPA
- The best way to detect database connection leaks
- How to lazy load entity properties with Hibernate
- 14 High-Performance Java Persistence Tips
- How to map JSON objects using generic Hibernate Types
- High-Performance Java Persistence – Part Two
- How to implement a custom String-based sequence identifier generator with Hibernate
- How to implement equals and hashCode using the JPA entity identifier (Primary Key)
- The Open Session In View Anti-Pattern
- How to call PostgreSQL functions (stored procedures) with JPA and Hibernate
- High-Performance Java Persistence – Chapter 16 – Caching
- The best way to log SQL statements with JDBC, JPA or Hibernate
- How to call SQL Server stored procedures and functions with JPA and Hibernate
- Impressions from Devoxx France 2016
- How to run database integration tests 20 times faster
- High-Performance Java Persistence – Chapter 15 – Fetching
- How to call Oracle stored procedures and functions with JPA and Hibernate
- Impressions from Voxxed Days Bucharest 2016
- How to combine the Hibernate assigned generator with a sequence or an identity column
- High-Performance Java Persistence – Chapter 14 – Batching
- MySQL metadata locking and database transaction ending
- High-Performance Java Persistence – Chapter 13 – Flushing
- How to enable bytecode enhancement dirty checking in Hibernate
- High-Performance Java Persistence – Chapter 12 – Inheritance
- How do JPA and Hibernate define the AUTO flush mode
- High-Performance Java Persistence – Chapter 11 – Relationships
2015 42
- How does aggressive connection release work in Hibernate
- High-Performance Java Persistence – Chapter 10 – Mapping Types and Identifiers
- I just joined the Hibernate team at RedHat
- How to bootstrap Hibernate without the persistence.xml file
- High-Performance Java Persistence – Chapter 9 – Hibernate Connection Management
- High-Performance Java Persistence – Chapter 8 – Why JPA and Hibernate matter
- High-Performance Java Persistence – Part One
- A beginner’s guide to Read and Write Skew phenomena
- Two years of blogging
- How does the MySQL JDBC driver handle prepared statements
- A paranoid’s guide to backing up a working folder
- How does FlexyPool support both Connection proxies and decorators
- Why you should always use connection pooling with Oracle XE
- How to translate WordPress blog posts to Leanpub Markdown
- Speedment ORM – deliberate enterprise caching
- How does FlexyPool support the Dropwizard Metrics package renaming
- The High-Performance Java Persistence book
- How to monitor a Java EE DataSource
- How does Hibernate Query Cache work
- How does Hibernate TRANSACTIONAL CacheConcurrencyStrategy work
- How does Hibernate READ_WRITE CacheConcurrencyStrategy work
- How does Hibernate NONSTRICT_READ_WRITE CacheConcurrencyStrategy work
- How does Hibernate Collection Cache work
- How to optimize unidirectional collections with JPA and Hibernate
- How does Hibernate READ_ONLY CacheConcurrencyStrategy work
- A beginner’s guide to Cache synchronization strategies
- Things to consider before jumping to application-level caching
- How does Hibernate store second-level cache entries
- JDBC Statement fetchSize property
- How to batch DELETE statements with Hibernate
- How to batch INSERT and UPDATE statements with Hibernate
- How does CascadeType.LOCK works in JPA and Hibernate
- A beginner’s guide to JPA and Hibernate Cascade Types
- How do LockModeType.PESSIMISTIC_READ and LockModeType.PESSIMISTIC_WRITE work in JPA and Hibernate
- How does LockModeType.PESSIMISTIC_FORCE_INCREMENT work in JPA and Hibernate
- The best way to use OPTIMISTIC_FORCE_INCREMENT with JPA and Hibernate
- How to fix optimistic locking race conditions with pessimistic locking
- How does LockModeType.OPTIMISTIC work in JPA and Hibernate
- How to get a 10,000 points StackOverflow reputation
- A beginner’s guide to Java Persistence locking
- Why you should pay developers to learn
- Book review – How Linux Works 2nd edition
2014 59
- 2014 – A year in review
- A beginner’s guide to transaction isolation levels in enterprise Java
- JPA and Hibernate FetchType EAGER is a code smell
- How to prevent OptimisticLockException with Hibernate versionless optimistic locking
- Spring request-level memoization
- Java Performance Workshop with Peter Lawrey
- A beginner’s guide to Java time zone handling
- How to address the OptimisticLockException in JPA and Hibernate
- Hibernate collections optimistic locking
- How does Hibernate guarantee application-level repeatable reads
- MongoDB Incremental Migration Scripts
- Integration testing done right with Embedded MongoDB
- Logical vs physical clock optimistic locking
- One year of blogging
- The fastest way of drawing UML class diagrams
- How to prevent lost updates in long conversations
- A beginner’s guide to database locking and the lost update phenomena
- How does the bytecode enhancement dirty checking mechanism work in Hibernate 4.3
- From mostly interested to most interesting
- How to customize Hibernate dirty checking mechanism
- The anatomy of Hibernate dirty checking mechanism
- How does AUTO flush strategy work in JPA and Hibernate
- A beginner’s guide to flush strategies in JPA and Hibernate
- A beginner’s guide to entity state transitions with JPA and Hibernate
- Hibernate pooled and pooled-lo identifier generators
- A beginner’s guide to Hibernate enhanced identifier generators
- How do Identity, Sequence, and Table (sequence-like) generators work in JPA and Hibernate
- Hibernate and UUID identifiers
- The hi/lo algorithm
- A beginner’s guide to natural and surrogate database keys
- What I learned at Topconf Bucharest
- A beginner’s guide to Hibernate Types
- The minimal configuration for testing Hibernate
- The data knowledge stack
- The simple scalability equation
- Time to break free from the SQL-92 mindset
- How to import CSV data into PostgreSQL
- Professional connection pool sizing with FlexyPool
- FlexyPool, reactive connection pooling
- The anatomy of Connection Pooling
- Maven and Java multi-version modules
- MongoDB 2.6 is $out
- Effective learning techniques for software craftsmen
- The Builder pattern and the Spring framework
- Afraid of reopened issues?
- Choosing a leader like an agilist
- Caching best practices
- The regex that broke a server
- A beginner’s guide to Git feature branches
- JOOQ Facts: SQL functions made easy
- Code review best practices
- How to detect the Hibernate N+1 query problem during testing
- JSON pattern matching with sed, perl and regular expressions
- MongoDB and the fine art of data modeling
- A beginner’s guide to MongoDB performance turbocharging
- MongoDB time series: Introducing the aggregation framework
- A beginner’s guide to ACID and database transactions
- Asciidoctor for collaborative book writing
- An open Java Transaction book
2013 25
- Good vs Bad Leader
- NoSQL is not just about BigData
- MongoDB Facts: Lightning fast aggregation
- Why I like Spring bean aliasing
- JPA Criteria API can generate unexpected SQL statements
- JOOQ Facts: From JPA Annotations to JOOQ Table Mappings
- Hibernate integration testing strategies
- MongoDB Facts: 80000+ inserts/second on commodity hardware
- JVM Boolean Options
- Teaching is the best way to learn
- Why I never blame open source projects
- How to retry JPA transactions after an OptimisticLockException
- Optimistic locking retry with MongoDB
- MongoDB optimistic locking
- Open-minded architect
- Batch processing best practices
- 21st century logging
- How to implement Equals and HashCode for JPA entities
- How to fetch entities multiple levels deep with Hibernate
- A beginner’s guide to Hibernate fetching strategies
- A beginner’s guide to Hibernate flush operation order
- How do Set and List collections behave with JPA and Hibernate
- Book Review – How to win friends and influence people
- Lock processing logic by customer
- Why I like Spring @Autowired for List types