top of page
Search
  • Writer's pictureLeonard Anghel

How To Calculate Non-Persistent Property via Hibernate @Formula

Updated: May 9, 2020

Motivation:

This article is useful if you need to calculate a non-persistent property based on the persistent entity attributes.


Description:

This is a Spring Boot application that uses the Hibernate, @Formula. Via this annotation, we can calculate non-persistent properties.


Key points:

  • Annotate the non-persistent property with @Transient

  • Annotate the non-persistent field with @Formula

  • As the value of @Formula, you have to add the eactly SQL query expression that calculates this non-persistent property based on the persistent entity attributes (check out the below discounted field):

Testing time:

Fetching a Book entity will be accomplished via the following SQL statement. Notice that Hibernate has added the formula given via @Formula is part of the query triggered against the database:


SELECT

book0_.id AS id1_0_,

book0_.isbn AS isbn2_0_,

book0_.price AS price3_0_,

book0_.title AS title4_0_,

book0_.price - book0_.price * 0.25 AS formula0_

FROM book book0_


Tam Ta Da Dam! :) The complete application is available on GitHub.


If you need a deep dive into the performance recipes exposed in this repository then I am sure that you will love my book "Spring Boot Persistence Best Practices".


1,165 views0 comments

Recent Posts

See All

How To Bulk Updates

Motivation: This article is useful if you need a fast way to update a significant amount of data in the database. Bulk operations (updates and deletes) can be a good choice. Nevertheless, when Hiberna

Session-Level Batching (Hibernate 5.2 or Higher)

Motivation: This article is useful if you want to vary the batching size per Hibernate Session. While global (application-level) batching size can be easily set via the hibernate.jdbc.batch_size prope

How To JDBC Batch a Big JSON File Via ForkJoinPool

Motivation: This article is useful if you want to JDBC batch inserts concurrently. For example, we want to batch the content of a huge file. By employing concurrent batching we can do it much faster t

bottom of page