The Curious Engineer

All blogs / Java / JVM

Vlad Mihalcea

vladmihalcea.com

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

  1. A beginner’s guide to the Jenesis build tool
  2. Awesome conference – Game of Codes – Niš – 2026
  3. Thirteen years of blogging
  4. What I learned at DevTalks Cluj-Napoca 2026
  5. Meet Jos Roseboom
  6. How to emulate LEFT JOIN FETCH using Record-based projections

2025 10

  1. The best way to replace the deprecated GenericGenerator
  2. Book Review – Just Use Postgres!
  3. The best way to clean up test data with Spring and Hibernate
  4. Book Review – Troubleshooting Java
  5. Twelve years of blogging
  6. MySQL Query Optimization with Releem
  7. Foundations of AI and Machine Learning for Java Developers Course Review
  8. How to map the Oracle TIMESTAMP WITH TIME ZONE with JPA
  9. MySQL Performance Tuning with Releem
  10. Why you should use compact table columns

2024 45

  1. High-Performance Java Persistence Newsletter, Issue 69
  2. Avoid using Set for bidirectional JPA OneToMany collections
  3. JTA Transaction Type
  4. The best way to determine the optimal connection pool size
  5. High-Performance Java Persistence Newsletter, Issue 68
  6. How to use LazyConnectionDataSourceProxy with Spring Data JPA
  7. RESOURCE_LOCAL JPA Transaction Type
  8. High-Performance Java Persistence Newsletter, Issue 67
  9. Eleven years of blogging
  10. Keyset Pagination with Spring Data WindowIterator
  11. A beginner’s guide to Spring Data Envers
  12. Embeddable Inheritance with JPA and Hibernate
  13. High-Performance Java Persistence Newsletter, Issue 66
  14. Custom Spring Boot Actuator Endpoint
  15. How to integrate Jakarta Data with Spring and Hibernate
  16. High-Performance Java Persistence Newsletter, Issue 65
  17. Hibernate SoftDelete annotation
  18. How to use symbolic links to move the DB data folder
  19. Book Review – Beginning Helidon
  20. High-Performance Java Persistence Newsletter, Issue 64
  21. How to map Java Enum to custom values with JPA and Hibernate
  22. How does the Hibernate JAVA_TIME_USE_DIRECT_JDBC setting work
  23. Hibernate WITH RECURSIVE query
  24. High-Performance Java Persistence Newsletter, Issue 63
  25. Hibernate ON CONFLICT DO clause
  26. PostgreSQL COPY result set to file
  27. PostgreSQL plan_cache_mode
  28. Overriding FetchType.EAGER with fetchgraph
  29. High-Performance Java Persistence Newsletter, Issue 62
  30. The best way to use the JPA OneToOne optional attribute
  31. How to calculate percentiles with SQL PERCENTILE_CONT
  32. PostgreSQL FOR UPDATE vs FOR NO KEY UPDATE
  33. High-Performance Java Persistence Newsletter, Issue 61
  34. PostgreSQL Heap-Only-Tuple or HOT Update Optimization
  35. PostgreSQL Index Types
  36. High-Performance Java Persistence Newsletter, Issue 60
  37. How to map the OffsetDateTime ZoneOffset with Hibernate TimeZoneColumn
  38. How to use Java Records with Spring Data JPA
  39. PostgreSQL Performance Tuning Settings
  40. Hibernate StatelessSession JDBC Batching
  41. High-Performance Java Persistence Newsletter, Issue 59
  42. Fetching recursive associations with JPA and Hibernate
  43. How to use the Java CountDownLatch
  44. The best way to test the data access layer
  45. High-Performance Java Persistence Newsletter, Issue 58

2023 51

  1. Hibernate StatelessSession Upsert
  2. The best way to map multiple entities on the same table
  3. Spring Load-Time Weaving
  4. High-Performance Java Persistence Newsletter, Issue 57
  5. Index Selectivity
  6. How to cascade DELETE with Spring and Hibernate events
  7. Table partitioning with Spring and Hibernate
  8. High-Performance Java Persistence Newsletter, Issue 56
  9. How to cascade DELETE unidirectional associations with Spring Data JPA
  10. How to batch INSERT statements with MySQL and Hibernate
  11. The best way to use Spring Data JPA Stream methods
  12. High-Performance Java Persistence Newsletter, Issue 55
  13. Ten years of blogging
  14. How to find the source of an SQL query generated by Hibernate
  15. How to fetch multiple JPA collections with Blaze Persistence MULTISET
  16. High-Performance Java Persistence Newsletter, Issue 54
  17. PostgreSQL JDBC Statement Caching
  18. The best way to hide the JPA entity identifier
  19. The best way to use JPA bidirectional sync methods
  20. SQL Server useBulkCopyForBatchInsert configuration property
  21. High-Performance Java Persistence Newsletter, Issue 53
  22. JDBC Profiling with VisualVM
  23. Soft delete and JPA version property
  24. How to customize the HibernateTypesContributor from Hypersistence Utils
  25. High-Performance Java Persistence Newsletter, Issue 52
  26. Spring Data Query By Example
  27. How to fetch multiple to-many relationships with jOOQ MULTISET
  28. The best way to use one-to-one table relationships
  29. The best way to validate the DDL schema with Spring and Hibernate
  30. High-Performance Java Persistence Newsletter, Issue 51
  31. Cache synchronization using jOOQ and PostgreSQL functions
  32. SQL Operation Order
  33. Hibernate default entity sequence
  34. High-Performance Java Persistence Newsletter, Issue 50
  35. Spring Transaction and Connection Management
  36. The best way to call SQL Server stored procedures with jOOQ
  37. PostgreSQL Auto Explain
  38. High-Performance Java Persistence Newsletter, Issue 49
  39. The best way to use the Spring Data JPA Specification
  40. The best way to use JOIN FETCH and Pagination with Spring
  41. The best way to use Spring Data query methods
  42. The best way to use SQL NOWAIT
  43. High-Performance Java Persistence Newsletter, Issue 48
  44. YugabyteDB Architecture
  45. The best way to generate a TSID entity identifier with JPA and Hibernate
  46. Fault Tolerance with Spring Data and YugabyteDB
  47. High-Performance Java Persistence Newsletter, Issue 47
  48. Scaling a Spring application with a YugabyteDB cluster
  49. The awesome BaseJpaRepository from Hypersistence Utils
  50. YugabyteDB Connection Pooling
  51. High-Performance Java Persistence Newsletter, Issue 46

2022 52

  1. From Hibernate Types to Hypersistence Utils
  2. Spring MDC Transaction Logging
  3. Spring Data Hibernate Entity Listeners
  4. The best UUID type for a database Primary Key
  5. High-Performance Java Persistence Newsletter, Issue 45
  6. The best way to use UNION, INTERSECT, and EXCEPT with Hibernate
  7. The best way to do the Spring 6 migration
  8. The Spring Data JPA findById Anti-Pattern
  9. Spring Data JPA entity locking
  10. High-Performance Java Persistence Newsletter, Issue 44
  11. Building a Distributed Audit Log with YugabyteDB
  12. How to write a custom Spring Data Base Repository
  13. YugabyteDB column-level locking
  14. High-Performance Java Persistence Newsletter, Issue 43
  15. Nine years of blogging
  16. Strong Consistency with YugabyteDB
  17. The Spring Data findAll Anti-Pattern
  18. A beginner’s guide to YugabyteDB
  19. High-Performance Java Persistence Newsletter, Issue 42
  20. The best way to fetch a Spring Data JPA DTO Projection
  21. How to use different Java versions for main and test in Maven
  22. Testcontainers Database Integration Testing
  23. MySQL rewriteBatchedStatements configuration property
  24. High-Performance Java Persistence Newsletter, Issue 41
  25. The best way to map MonetaryAmount with JPA and Hibernate
  26. Maximum number of database connections
  27. High-Performance Java Persistence Newsletter, Issue 40
  28. Spring Data JPA MultipleBagFetchException
  29. Spring Transaction Best Practices
  30. The race condition that led to Flexcoin bankruptcy
  31. The best Spring Data JpaRepository
  32. High-Performance Java Persistence Newsletter, Issue 39
  33. Java data access technology survey results
  34. The best way to configure the Hibernate Dialect
  35. The best way to use the Hibernate TupleTransformer
  36. High-Performance Java Persistence Newsletter, Issue 38
  37. Hibernate SQM – Semantic Query Model
  38. Hibernate and JPQL Window Functions
  39. High-Performance Java Persistence Newsletter, Issue 37
  40. How to format SQL using the command line
  41. Java application performance tuning using Lightrun
  42. JPA Association Fetching Validator
  43. Lightrun – the best way to debug production problems
  44. High-Performance Java Persistence Newsletter, Issue 36
  45. The best way to write a Spring Data Exists Query
  46. A beginner’s guide to Serializability
  47. Spring Boot Application Properties
  48. High-Performance Java Persistence Newsletter, Issue 35
  49. How to write EXISTS subqueries with JPA and Hibernate
  50. The best way to use the Spring Transactional annotation
  51. The best way to handle time zones in a Java web application
  52. High-Performance Java Persistence Newsletter, Issue 34

2021 51

  1. Keyset Pagination with Spring
  2. The best way to write a custom Spring Data Repository
  3. Default Database Primary, Foreign, and Unique Key Indexing
  4. The best way to log SQL statements with Spring Boot
  5. High-Performance Java Persistence Newsletter, Issue 33
  6. RevoGain Software Architecture
  7. How to tunnel localhost to the public Internet
  8. How to create a tech startup
  9. High-Performance Java Persistence Newsletter, Issue 32
  10. How to map polymorphic JSON objects with JPA and Hibernate
  11. Hibernate Batch Sequence Generator
  12. The JPA and Hibernate second-level cache
  13. High-Performance Java Persistence Newsletter, Issue 31
  14. Eight years of blogging
  15. SQL Recursive WITH CTE queries
  16. JPA Bulk Update and Delete with Blaze Persistence
  17. SQL CROSS APPLY – A Beginner’s Guide
  18. High-Performance Java Persistence Newsletter, Issue 30
  19. SQL Derived Table or Inline View
  20. SQL CTE – Common Table Expression
  21. Keyset Pagination with JPA and Hibernate
  22. High-Performance Java Persistence Newsletter, Issue 29
  23. SQL Seek Method or Keyset Pagination
  24. Blaze Persistence – The Best Way to Write JPA Criteria Queries
  25. High-Performance Java Persistence Newsletter, Issue 28
  26. Hibernate Physical Naming Strategy
  27. 9 High-Performance Tips when using Oracle with JPA and Hibernate
  28. Hibernate Application Performance Tuning
  29. High-Performance Java Persistence Newsletter, Issue 27
  30. Use Hibernate Dynamic Update for JSON properties
  31. 20 years of Hibernate
  32. JPA Entity Graph
  33. SQL Server Foreign Key Locking
  34. High-Performance Java Persistence Newsletter, Issue 26
  35. How to index JSON columns using MySQL
  36. Clustered Index
  37. SQL Server JDBC – Set sendStringParametersAsUnicode to false
  38. High-Performance Java Persistence Newsletter, Issue 25
  39. SQL Server deadlock trace flags
  40. Optimistic vs. Pessimistic Locking
  41. JPA Default Fetch Plan
  42. High-Performance Java Persistence Newsletter, Issue 24
  43. Merge Join Algorithm
  44. MySQL Query Profiling Using Performance Schema
  45. SQL Server OPENJSON – Map JSON to a relational table
  46. Hash Join Algorithm
  47. High-Performance Java Persistence Newsletter, Issue 23
  48. Nested Loop Join Algorithm
  49. Connection Monitoring with JPA and Hibernate
  50. Maven and Gradle Hibernate Enhance Plugin
  51. Hibernate LazyToOne annotation

2020 72

  1. High-Performance Java Persistence Newsletter, Issue 22
  2. How to get a JSON property value using PostgreSQL
  3. MySQL JDBC Statement Caching
  4. SQL LATERAL JOIN – A Beginner’s Guide
  5. High-Performance Java Persistence Newsletter, Issue 21
  6. Percona PMM – A beginner’s guide
  7. The best way to get more Twitter followers
  8. Mapping Java Records to JSON columns using Hibernate
  9. SQL Server audit logging using triggers
  10. High-Performance Java Persistence Newsletter, Issue 20
  11. The JPA and Hibernate first-level cache
  12. MySQL JSON_TABLE – Map a JSON object to a relational database table
  13. 60 years of COBOL – past, present, and future
  14. High-Performance Java Persistence Newsletter, Issue 19
  15. Hibernate Session doWork and doReturningWork methods
  16. Seven years of blogging
  17. High-Performance Java Persistence Newsletter, Issue 18
  18. Spring Boot performance monitoring
  19. Why and when you should use JPA
  20. High-Performance Java Persistence Newsletter, Issue 17
  21. Hibernate hbm2ddl.auto schema generation
  22. How to encrypt and decrypt JSON properties with JPA
  23. High-Performance Java Persistence Newsletter, Issue 16
  24. PostgreSQL audit logging using triggers
  25. SQL ANY Operator – A Beginner’s Guide
  26. High-Performance Java Persistence Newsletter, Issue 15
  27. Bulk Update and Delete with JPA and Hibernate
  28. JPA AttributeConverter – A Beginner’s Guide
  29. High-Performance Java Persistence Newsletter, Issue 14
  30. MySQL audit logging using triggers
  31. SQL JOIN USING – A Beginner’s Guide
  32. SQL LEFT JOIN – A Beginner’s Guide
  33. How does orphanRemoval work with JPA and Hibernate
  34. High-Performance Java Persistence Newsletter, Issue 13
  35. Flyway Database Schema Migrations
  36. Java Map to JSON mapping with JPA and Hibernate
  37. High-Performance Java Persistence Newsletter, Issue 12
  38. Read-write and read-only transaction routing with Spring
  39. JPA and Hibernate Query setParameter – User Guide
  40. High-Performance Java Persistence Newsletter, Issue 11
  41. How to get the SQL query from JPQL or JPA Criteria
  42. Single-Primary Database Replication
  43. High-Performance Java Persistence Newsletter, Issue 10
  44. How to generate JPA entity identifier values using a database sequence
  45. How to fetch a one-to-many DTO projection with JPA and Hibernate
  46. High-Performance Java Persistence Newsletter, Issue 9
  47. ManyToOne JPA and Hibernate association best practices
  48. How to map Date and Timestamp with JPA and Hibernate
  49. High-Performance Java Persistence Newsletter, Issue 8
  50. The best way to use Java Records with JPA and Hibernate
  51. Java Records – A Beginner’s Guide
  52. High-Performance Java Persistence Newsletter, Issue 7
  53. SQL INNER JOIN – A Beginner’s Guide
  54. JPA Criteria Metamodel Generation and Usage Guide
  55. High-Performance Java Persistence Newsletter, Issue 6
  56. The best way to use the JPA SqlResultSetMapping
  57. N+1 query problem with JPA and Hibernate
  58. High-Performance Java Persistence Newsletter, Issue 5
  59. A beginner’s guide to JPA persistence.xml file
  60. Multiline String literals with Java Text Blocks
  61. High-Performance Java Persistence Newsletter, Issue 4
  62. Hibernate slow query log
  63. Hypersistence Optimizer Runtime Scanner
  64. High-Performance Java Persistence Newsletter, Issue 3
  65. PostgreSQL triggers and isolation levels
  66. How to map a PostgreSQL ARRAY to a Java List with JPA and Hibernate
  67. High-Performance Java Persistence Newsletter, Issue 2
  68. SQL EXISTS and NOT EXISTS
  69. How to return a Map result from a JPA or Hibernate query
  70. High-Performance Java Persistence Newsletter, Issue 1
  71. Multidimensional array mapping with JPA and Hibernate
  72. The best way to use a Hibernate ResultTransformer

2019 49

  1. The best way to prevent JPA and Hibernate performance issues
  2. How to migrate the hilo Hibernate identifier optimizer to the pooled strategy
  3. SQL CROSS JOIN – A Beginner’s Guide
  4. How does the 2PL (Two-Phase Locking) algorithm work
  5. Bulk update optimistic locking with JPA and Hibernate
  6. PostgreSQL trigger consistency check
  7. The best way to fix the Hibernate MultipleBagFetchException
  8. Spring Boot performance tuning
  9. A beginner’s guide to database deadlock
  10. The best way to fetch multiple entities by id using JPA and Hibernate
  11. How to map SQL Server JSON columns using JPA and Hibernate
  12. JDBC Driver Maven dependency list
  13. Six years of blogging
  14. How to get the query execution plan on SQL Server
  15. How to map Oracle JSON columns using JPA and Hibernate
  16. How to write a compact DTO projection query with JPA
  17. How to get the SQL execution plan on Oracle
  18. Mapping PostgreSQL Interval to Java Duration with Hibernate
  19. How to map multiple JPA entities to one database table with Hibernate
  20. How to limit the SQL query result set to Top-N rows only
  21. How to write JPA Criteria API queries using Codota
  22. Pagination best practices
  23. SQL ORDER BY RANDOM
  24. How to override the default Hibernate Session FlushMode
  25. Query timeout with JPA and Hibernate
  26. MySQL 8 support for custom SQL CHECK constraints
  27. A beginner’s guide to JPA and Hibernate query hints
  28. The best way to map an entity version property with JPA and Hibernate
  29. Optimistic locking with JPA and Hibernate
  30. Tuning Spring Petclinic JPA and Hibernate configuration with Hypersistence Optimizer
  31. How to intercept and modify SQL queries with the Hibernate StatementInspector
  32. How to detect HHH000104 issues with hibernate.query.fail_on_pagination_over_collection_fetch
  33. How to expose Hibernate Statistics via JMX
  34. A beginner’s guide to Hibernate Statistics
  35. A beginner’s guide to database table relationships
  36. How to implement a database job queue using SKIP LOCKED
  37. How to change the @OneToOne shared primary key column name with JPA and Hibernate
  38. How does a relational database execute SQL statements and prepared statements
  39. Hypersistence Optimizer initial release
  40. Why you should avoid EXTRA Lazy Collections with Hibernate
  41. How does the entity version property work when using JPA and Hibernate
  42. How do JPA persist, merge and Hibernate save, update, saveOrUpdate methods work
  43. How to log the database transaction id using MDC
  44. The best way to call a stored procedure with JPA and Hibernate
  45. How to map a String JPA property to a JSON column using Hibernate
  46. How to escape SQL reserved keywords with JPA and Hibernate
  47. How to map a PostgreSQL Range column type with JPA and Hibernate
  48. How to get the current database transaction id
  49. How to map a PostgreSQL HStore entity property with JPA and Hibernate

2018 54

  1. How to map a PostgreSQL Enum ARRAY to a JPA entity property using Hibernate
  2. How to bind custom Hibernate parameter types to JPA queries
  3. How to intercept entity changes with Hibernate event listeners
  4. The best way to initialize LAZY entity and collection proxies with JPA and Hibernate
  5. Three years as a Hibernate Developer Advocate
  6. How to execute SQL functions with multiple parameters in a JPQL query with Hibernate
  7. The best way to use the JPQL DISTINCT keyword with JPA and Hibernate
  8. How to map camelCase properties to snake_case column names with Hibernate
  9. How to optimize JPQL and Criteria API query plans with Hibernate Statistics
  10. How to merge entity collections with JPA and Hibernate
  11. How to map java.time Year and Month with JPA and Hibernate
  12. How to map the Java YearMonth type with JPA and Hibernate
  13. Query pagination with JPA and Hibernate
  14. Five years of blogging
  15. Spring read-only transaction Hibernate optimization
  16. Hibernate performance tuning tips
  17. How to map the PostgreSQL inet type with JPA and Hibernate
  18. The best way to clone or duplicate an entity with JPA and Hibernate
  19. Hibernate database schema multitenancy
  20. How to fix the Hibernate “No Dialect mapping for JDBC type” issue
  21. Hibernate database catalog multitenancy
  22. How to query by entity type using JPA Criteria API
  23. A beginner’s guide to database multitenancy
  24. How to query parent rows when all children must match the filtering criteria with SQL and Hibernate
  25. The best way to use SQL functions in JPQL or Criteria API queries with JPA and Hibernate
  26. A beginner’s guide to the Hibernate JPQL and Native Query Plan Cache
  27. A beginner’s guide to Phantom Read anomaly
  28. How do find and getReference EntityManager methods work when using JPA and Hibernate
  29. A beginner’s guide to Non-Repeatable Read anomaly
  30. MariaDB 10.3 supports database sequences
  31. How to improve statement caching efficiency with IN clause parameter padding
  32. A beginner’s guide to Dirty Read anomaly
  33. A beginner’s guide to Linearizability
  34. How to synchronize bidirectional entity associations with JPA and Hibernate
  35. How to use @PrePersist and @PreUpdate on Embeddable with JPA and Hibernate
  36. How to avoid the Hibernate Query Cache N+1 issue
  37. 9 High-Performance Tips when using PostgreSQL with JPA and Hibernate
  38. PostgreSQL reWriteBatchedInserts configuration property
  39. How to map an immutable entity with JPA and Hibernate
  40. PostgreSQL SERIAL or IDENTITY column and Hibernate IDENTITY generator
  41. How to customize the Hypersistence Utils JSON Serializer
  42. How to use a JVM or database auto-generated UUID identifier with JPA and Hibernate
  43. How to use database-specific or Hibernate-specific features without sacrificing portability
  44. How to customize the Hypersistence Utils Jackson ObjectMapper
  45. How to get the actual execution plan for an Oracle SQL query using Hibernate query hints
  46. How to map a JPA entity to a View or SQL query using Hibernate
  47. How to cache non-existing entity fetch results with JPA and Hibernate
  48. JDBC Driver Connection URL strings
  49. How to use the Hibernate Query Cache for DTO projections
  50. A beginner’s guide to the high-performance-java-persistence GitHub repository
  51. FlexyPool 2 has been released
  52. Hibernate HSQLDB ARRAY Type
  53. JPA Criteria API Bulk Update and Delete
  54. Upgrading to WordPress.com Business Plan

2017 65

  1. How to map a JSON collection using JPA and Hibernate
  2. How to bootstrap JPA programmatically without the persistence.xml configuration file
  3. How to order entity subclasses by their class type using JPA and Hibernate
  4. Two years as a Hibernate Developer Advocate
  5. How to become a Java Champion
  6. How to map a JPA @ManyToOne relationship to a SQL query using the Hibernate @JoinFormula annotation
  7. How to audit entity modifications using the JPA @EntityListeners, @Embedded, and @Embeddable annotations
  8. How to emulate @CreatedBy and @LastModifiedBy from Spring Data using the @GeneratorType Hibernate annotation
  9. How to inherit properties from a base class entity using @MappedSuperclass with JPA and Hibernate
  10. How do UPSERT and MERGE work in Oracle, SQL Server, PostgreSQL and MySQL
  11. The best way to map a @NaturalId business key with JPA and Hibernate
  12. How does Hibernate handle JPA Criteria API literals
  13. 9 High-Performance Tips when using MySQL with JPA and Hibernate
  14. How to JOIN unrelated entities with JPA and Hibernate
  15. How to solve the PostgreSQL :: cast operator issue with JPA and Hibernate
  16. Four years of blogging
  17. The hibernate-types open-source project is born
  18. The best way to map an Enum Type with JPA and Hibernate
  19. The best way to fix the Hibernate “firstResult/maxResults specified with collection fetch; applying in memory!” warning message
  20. Why you should definitely learn SQL Window Functions
  21. How to map a composite identifier using an automatically @GeneratedValue with JPA and Hibernate
  22. The best way to map a projection query to a DTO (Data Transfer Object) with JPA and Hibernate
  23. How to get the entity mapping to database table binding metadata from Hibernate
  24. The best way to implement an audit log using Hibernate Envers
  25. How to map a @ManyToOne association using a non-Primary Key column with JPA and Hibernate
  26. How to store schema-less EAV (Entity-Attribute-Value) data using JSON and Hibernate
  27. How to optimize the merge operation using update while batching with JPA and Hibernate
  28. The best way to map a JPA and Hibernate many-to-many association with extra columns
  29. How to extract change data events from MySQL to Kafka using Debezium
  30. Book Review – High Performance MySQL (3rd edition)
  31. What’s new in JPA 2.2 – Stream the result of a Query execution
  32. A beginner’s guide to CDC (Change Data Capture)
  33. What’s new in JPA 2.2 – Java 8 Date and Time Types
  34. How to map Java and SQL arrays with JPA and Hibernate
  35. The best way to map the @DiscriminatorColumn with JPA and Hibernate
  36. The best way to use entity inheritance with JPA and Hibernate
  37. The best way to map the SINGLE_TABLE inheritance with JPA and Hibernate
  38. How to fix “wrong column type encountered” schema-validation errors with JPA and Hibernate
  39. The fastest way to update a table row when using Hibernate and Oracle
  40. Why you should always use hibernate.connection.provider_disables_autocommit for resource-local JPA transactions
  41. Best way to map the JPA and Hibernate ManyToMany relationship
  42. How to install DB2 Express-C on Docker and set up the JDBC connection properties
  43. How to get access to database table metadata with Hibernate 5
  44. The best way to do batch processing with JPA and Hibernate
  45. How does a JPA Proxy work and how to unproxy it with Hibernate
  46. How do PostgreSQL advisory locks work
  47. How to get started with CockroachDB
  48. 2 best tools that can help you solve ANY software development problem
  49. Why you should use the Hibernate ResultTransformer to customize result set mappings
  50. The best way to map a @OneToMany relationship with JPA and Hibernate
  51. How to find which statement failed in a JDBC Batch Update
  52. How to store date, time, and timestamps in UTC time zone with JDBC and Hibernate
  53. The best way to soft delete with Hibernate
  54. How does MVCC (Multi-Version Concurrency Control) work
  55. How to encrypt and decrypt data with Hibernate
  56. How to map the latest child of a parent entity using Hibernate JoinFormula
  57. How does a relational database work
  58. How to run integration tests at warp speed using Docker and tmpfs
  59. How does database pessimistic locking interact with INSERT, UPDATE, and DELETE SQL statements
  60. A beginner’s guide to the Write Skew anomaly, and how it differs between 2PL and MVCC
  61. The problem of AUTO JPA GenerationType with MySQL and Hibernate
  62. The JPA EntityManager createNativeQuery is a Magic Wand
  63. How to replace the TABLE identifier generator with either SEQUENCE or IDENTITY in a portable way
  64. Book Review – SQL Antipatterns
  65. Why you should never use the TABLE identifier generator with JPA and Hibernate

2016 54

  1. How to map table rows to columns using SQL PIVOT or CASE expressions
  2. Book Review – Designing Data-Intensive Applications
  3. The performance penalty of Class.forName when parsing JPQL and Criteria queries
  4. How to customize an entity association JOIN ON clause with Hibernate @JoinFormula
  5. One year as a Developer Advocate
  6. How to map calculated properties with Hibernate @Generated annotation
  7. How does MySQL result set streaming perform vs fetching the whole JDBC ResultSet at once
  8. How to map calculated properties with JPA and Hibernate @Formula annotation
  9. The print version of High-Performance Java Persistence
  10. A beginner’s guide to SQL injection and how you should prevent it
  11. How to call MySQL stored procedures and functions with JPA and Hibernate
  12. How to resolve the Hibernate global database schema and catalog for native SQL queries
  13. The best way to implement equals, hashCode, and toString with JPA and Hibernate
  14. How to use external XML mappings files (outside of JAR) with JPA and Hibernate
  15. How to update only a subset of entity attributes using JPA and Hibernate @DynamicUpdate
  16. The best way to map a Java 1.8 Optional entity attribute with JPA and Hibernate
  17. Three years of blogging
  18. How to customize the JDBC batch size for each Persistence Context with Hibernate
  19. How to implement a custom basic type using Hibernate UserType
  20. The best way to lazy load entity attributes using JPA and Hibernate
  21. The best way to handle the LazyInitializationException
  22. The hibernate.enable_lazy_load_no_trans Anti-Pattern
  23. How to increment the parent entity version whenever a child entity gets modified with JPA and Hibernate
  24. High-Performance Java Persistence – Part Three
  25. JPA providers market share in 2016
  26. Fluent API entity building with JPA and Hibernate
  27. The best way to map a Composite Key with JPA and Hibernate
  28. The best way to map a @OneToOne relationship with JPA and Hibernate
  29. How do persist and merge work in JPA
  30. The best way to detect database connection leaks
  31. How to lazy load entity properties with Hibernate
  32. 14 High-Performance Java Persistence Tips
  33. How to map JSON objects using generic Hibernate Types
  34. High-Performance Java Persistence – Part Two
  35. How to implement a custom String-based sequence identifier generator with Hibernate
  36. How to implement equals and hashCode using the JPA entity identifier (Primary Key)
  37. The Open Session In View Anti-Pattern
  38. How to call PostgreSQL functions (stored procedures) with JPA and Hibernate
  39. High-Performance Java Persistence – Chapter 16 – Caching
  40. The best way to log SQL statements with JDBC, JPA or Hibernate
  41. How to call SQL Server stored procedures and functions with JPA and Hibernate
  42. Impressions from Devoxx France 2016
  43. How to run database integration tests 20 times faster
  44. High-Performance Java Persistence – Chapter 15 – Fetching
  45. How to call Oracle stored procedures and functions with JPA and Hibernate
  46. Impressions from Voxxed Days Bucharest 2016
  47. How to combine the Hibernate assigned generator with a sequence or an identity column
  48. High-Performance Java Persistence – Chapter 14 – Batching
  49. MySQL metadata locking and database transaction ending
  50. High-Performance Java Persistence – Chapter 13 – Flushing
  51. How to enable bytecode enhancement dirty checking in Hibernate
  52. High-Performance Java Persistence – Chapter 12 – Inheritance
  53. How do JPA and Hibernate define the AUTO flush mode
  54. High-Performance Java Persistence – Chapter 11 – Relationships

2015 42

  1. How does aggressive connection release work in Hibernate
  2. High-Performance Java Persistence – Chapter 10 – Mapping Types and Identifiers
  3. I just joined the Hibernate team at RedHat
  4. How to bootstrap Hibernate without the persistence.xml file
  5. High-Performance Java Persistence – Chapter 9 – Hibernate Connection Management
  6. High-Performance Java Persistence – Chapter 8 – Why JPA and Hibernate matter
  7. High-Performance Java Persistence – Part One
  8. A beginner’s guide to Read and Write Skew phenomena
  9. Two years of blogging
  10. How does the MySQL JDBC driver handle prepared statements
  11. A paranoid’s guide to backing up a working folder
  12. How does FlexyPool support both Connection proxies and decorators
  13. Why you should always use connection pooling with Oracle XE
  14. How to translate WordPress blog posts to Leanpub Markdown
  15. Speedment ORM – deliberate enterprise caching
  16. How does FlexyPool support the Dropwizard Metrics package renaming
  17. The High-Performance Java Persistence book
  18. How to monitor a Java EE DataSource
  19. How does Hibernate Query Cache work
  20. How does Hibernate TRANSACTIONAL CacheConcurrencyStrategy work
  21. How does Hibernate READ_WRITE CacheConcurrencyStrategy work
  22. How does Hibernate NONSTRICT_READ_WRITE CacheConcurrencyStrategy work
  23. How does Hibernate Collection Cache work
  24. How to optimize unidirectional collections with JPA and Hibernate
  25. How does Hibernate READ_ONLY CacheConcurrencyStrategy work
  26. A beginner’s guide to Cache synchronization strategies
  27. Things to consider before jumping to application-level caching
  28. How does Hibernate store second-level cache entries
  29. JDBC Statement fetchSize property
  30. How to batch DELETE statements with Hibernate
  31. How to batch INSERT and UPDATE statements with Hibernate
  32. How does CascadeType.LOCK works in JPA and Hibernate
  33. A beginner’s guide to JPA and Hibernate Cascade Types
  34. How do LockModeType.PESSIMISTIC_READ and LockModeType.PESSIMISTIC_WRITE work in JPA and Hibernate
  35. How does LockModeType.PESSIMISTIC_FORCE_INCREMENT work in JPA and Hibernate
  36. The best way to use OPTIMISTIC_FORCE_INCREMENT with JPA and Hibernate
  37. How to fix optimistic locking race conditions with pessimistic locking
  38. How does LockModeType.OPTIMISTIC work in JPA and Hibernate
  39. How to get a 10,000 points StackOverflow reputation
  40. A beginner’s guide to Java Persistence locking
  41. Why you should pay developers to learn
  42. Book review – How Linux Works 2nd edition

2014 59

  1. 2014 – A year in review
  2. A beginner’s guide to transaction isolation levels in enterprise Java
  3. JPA and Hibernate FetchType EAGER is a code smell
  4. How to prevent OptimisticLockException with Hibernate versionless optimistic locking
  5. Spring request-level memoization
  6. Java Performance Workshop with Peter Lawrey
  7. A beginner’s guide to Java time zone handling
  8. How to address the OptimisticLockException in JPA and Hibernate
  9. Hibernate collections optimistic locking
  10. How does Hibernate guarantee application-level repeatable reads
  11. MongoDB Incremental Migration Scripts
  12. Integration testing done right with Embedded MongoDB
  13. Logical vs physical clock optimistic locking
  14. One year of blogging
  15. The fastest way of drawing UML class diagrams
  16. How to prevent lost updates in long conversations
  17. A beginner’s guide to database locking and the lost update phenomena
  18. How does the bytecode enhancement dirty checking mechanism work in Hibernate 4.3
  19. From mostly interested to most interesting
  20. How to customize Hibernate dirty checking mechanism
  21. The anatomy of Hibernate dirty checking mechanism
  22. How does AUTO flush strategy work in JPA and Hibernate
  23. A beginner’s guide to flush strategies in JPA and Hibernate
  24. A beginner’s guide to entity state transitions with JPA and Hibernate
  25. Hibernate pooled and pooled-lo identifier generators
  26. A beginner’s guide to Hibernate enhanced identifier generators
  27. How do Identity, Sequence, and Table (sequence-like) generators work in JPA and Hibernate
  28. Hibernate and UUID identifiers
  29. The hi/lo algorithm
  30. A beginner’s guide to natural and surrogate database keys
  31. What I learned at Topconf Bucharest
  32. A beginner’s guide to Hibernate Types
  33. The minimal configuration for testing Hibernate
  34. The data knowledge stack
  35. The simple scalability equation
  36. Time to break free from the SQL-92 mindset
  37. How to import CSV data into PostgreSQL
  38. Professional connection pool sizing with FlexyPool
  39. FlexyPool, reactive connection pooling
  40. The anatomy of Connection Pooling
  41. Maven and Java multi-version modules
  42. MongoDB 2.6 is $out
  43. Effective learning techniques for software craftsmen
  44. The Builder pattern and the Spring framework
  45. Afraid of reopened issues?
  46. Choosing a leader like an agilist
  47. Caching best practices
  48. The regex that broke a server
  49. A beginner’s guide to Git feature branches
  50. JOOQ Facts: SQL functions made easy
  51. Code review best practices
  52. How to detect the Hibernate N+1 query problem during testing
  53. JSON pattern matching with sed, perl and regular expressions
  54. MongoDB and the fine art of data modeling
  55. A beginner’s guide to MongoDB performance turbocharging
  56. MongoDB time series: Introducing the aggregation framework
  57. A beginner’s guide to ACID and database transactions
  58. Asciidoctor for collaborative book writing
  59. An open Java Transaction book

2013 25

  1. Good vs Bad Leader
  2. NoSQL is not just about BigData
  3. MongoDB Facts: Lightning fast aggregation
  4. Why I like Spring bean aliasing
  5. JPA Criteria API can generate unexpected SQL statements
  6. JOOQ Facts: From JPA Annotations to JOOQ Table Mappings
  7. Hibernate integration testing strategies
  8. MongoDB Facts: 80000+ inserts/second on commodity hardware
  9. JVM Boolean Options
  10. Teaching is the best way to learn
  11. Why I never blame open source projects
  12. How to retry JPA transactions after an OptimisticLockException
  13. Optimistic locking retry with MongoDB
  14. MongoDB optimistic locking
  15. Open-minded architect
  16. Batch processing best practices
  17. 21st century logging
  18. How to implement Equals and HashCode for JPA entities
  19. How to fetch entities multiple levels deep with Hibernate
  20. A beginner’s guide to Hibernate fetching strategies
  21. A beginner’s guide to Hibernate flush operation order
  22. How do Set and List collections behave with JPA and Hibernate
  23. Book Review – How to win friends and influence people
  24. Lock processing logic by customer
  25. Why I like Spring @Autowired for List types