Administrator

Lokesh Gupta

Lokesh Gupta is a Java developer with more than 20 years of experience and the founder of HowToDoInJava, which he started in 2012. He has worked on Java and Spring applications at Hewitt Associates, Hughes Systique, Adobe and Bank of America. The site has over 1,600 tutorials on Java, Spring Boot, Hibernate, testing and TypeScript. Every example is run and verified before it is published, and the source code is on GitHub.

Website: https://howtodoinjava.com

Github: https://github.com/lokeshgupta1981/

Twitter: @HowToDoInJAVA

LinkedIn: https://www.linkedin.com/in/lokeshgupta1981/

My Articles:

Spring Boot Tutorial

Learn Spring Boot with the following in-depth tutorials, covering from basic to advanced concepts such as packaging and monitoring.

Spring Boot Profiles

Learn about Spring profiles, @Profile, profile-specific beans and properties, profile groups and activating a certain profile during startup.

Accessing Properties in Spring Boot

Learn to use @PropertySource, @Value and @ConfigurationProperties annotations to register property files and inject configuration properties.

Spring Security Context Propagation to Threads

Learn to pass the Spring SecurityContext instance to new threads either spawned by Spring @Async or created explicitly using new Runnable or Callable instances. 1. Default Strategy is ThreadLocal Once the AuthenticationManager completes the authentication process successfully, it stores the Authentication instance for the rest of the request in the …

Password Encoders in Spring Security

Learn the contract spring security expects from PasswordEncoder interface, inbuilt implementations and DelegatingPasswordEncoder with examples.

Log4j2 Tutorial

Log4j2 provides significant improvements over its predecessor Log4j. Read about its xml and properties configuration and various examples.

Hibernate Tutorials: Learn Hibernate 7 with Examples

Hibernate tutorials for Hibernate 7.4, Jakarta Persistence 3.2 and Java 25, grouped as a learning path: setup, entities, entity states, associations, queries, caching, validation, search and fixes for common errors.

Mock JNDI DataSource in JUnit Tests with Hibernate and H2

Test code that looks up a JNDI DataSource without an application server: register a small in-memory JNDI provider or Simple-JNDI, bind an H2 DataSource under the production name, bootstrap Hibernate 7 with it and run CRUD in JUnit 6. Or skip JNDI and pass the DataSource object.

Hibernate Batch Insert and Update: batch_size Explained

Hibernate sends inserts, updates and deletes in JDBC batches once hibernate.jdbc.batch_size is set. Measured on Hibernate 7.4: why IDENTITY ids stop batching, how flush() and clear() keep memory flat, and when to use order_inserts, StatelessSession or a JPQL bulk statement.

Hibernate Aggregate Functions: count, min, max, sum, avg

Hibernate aggregate functions compute one value from many rows. Learn count, min, max, sum and avg in HQL, JPQL and the Criteria API, their Java return types, group by, having, null handling and Hibernate’s listagg, filter and window functions.

Hibernate Search: Full-Text Search with Lucene Example

Hibernate Search adds full-text search to Hibernate entities. Map fields with @FullTextField, @KeywordField and @GenericField, let the index follow every commit, rebuild it with the MassIndexer, and search with match, phrase, bool, range, sorting, paging and highlighting on Hibernate Search 8.4 and Lucene.

Hibernate Interceptor: Audit Trail and StatementInspector

A Hibernate interceptor gets a callback when an entity is persisted, changed, removed or loaded, with the old and new property values. Build an audit trail with onPersist, onFlushDirty and onRemove in Hibernate 7, pick the right scope, and rewrite SQL with a StatementInspector.

Hibernate Pagination: Offset, Keyset and Count Queries

Hibernate pagination loads a query result one page at a time with setFirstResult() and setMaxResults(). See the SQL for offset and keyset pages, page counts, the ORDER BY trap, join fetch paging and ScrollableResults on Hibernate 7.4.

JPA Lifecycle Callbacks in Hibernate: @PrePersist and More

The seven JPA lifecycle callbacks in Hibernate 7.4, when each one runs relative to persist(), flush and commit, entity listeners and default listeners in orm.xml, what a callback must not do, and Hibernate’s own event listeners.

Bootstrap EntityManager in Hibernate 7: 5 Ways With JPA 3.2

Create one EntityManagerFactory per database in Hibernate 7.4, from persistence.xml, from Java code with PersistenceConfiguration or HibernatePersistenceConfiguration, or from a PersistenceUnitInfo, then open one EntityManager per unit of work with runInTransaction() and callInTransaction().

Hibernate Date and Time Mapping: LocalDateTime and Instant

Hibernate maps LocalDate, LocalDateTime, Instant, OffsetDateTime and ZonedDateTime to SQL date, time and timestamp columns without annotations. See the DDL and stored values on Hibernate 7.4 and how @TimeZoneStorage keeps or drops the offset.

Configuring Ehcache 3 with Hibernate 6 and 7: Setup Guide

Set up Ehcache 3 as the Hibernate 6 and 7 second level cache: the hibernate-jcache and jakarta Ehcache dependencies, the JCache properties, a minimal ehcache.xml, @Cacheable and @Cache, hit statistics, and the startup error each missing piece causes.

Unable to Locate Persister in Hibernate: Causes and Fixes

“Unable to locate persister” (Unknown entity type in Hibernate 7) means Hibernate has no mapping for the class it received. See each cause reproduced on Hibernate 7.4 and Spring Boot 4.1, from javax imports and missing registration to DTOs, proxies and entity scanning, with a tested fix for each.

About Us

HowToDoInJava provides tutorials and how-to guides on Java and related technologies.

It also shares the best practices, algorithms & solutions and frequently asked interview questions.