Home » Author Archives: Vlad Mihalcea

Author Archives: Vlad Mihalcea

Vlad Mihalcea is a software architect passionate about software integration, high scalability and concurrency challenges.

How does FlexyPool support both Connection proxies and decorators

java-interview-questions-answers

Proxies FlexyPool monitors connection pool usage and so it needs to intercept the connection close method call. For simplicity sake, the first version was relying on dynamic proxies for this purpose: private static class ConnectionInvocationHandler implements InvocationHandler { public static final String CLOSE_METHOD_NAME = "close"; private final Connection target; private final ConnectionCallback callback; public ConnectionInvocationHandler( Connection target, ConnectionCallback callback) { ...

Read More »

Why you should always use connection pooling with Oracle XE

java-interview-questions-answers

Introduction Oracle Express Edition is the free version of Oracle Enterprise Edition and its smaller size makes it very convenient for testing various Oracle functionalities. According to Oracle documentation, the Express Edition can use at most one CPU and 1 GB of RAM, but in reality there are other limitations that are not always obvious. Database connection handling anomaly The ...

Read More »

How does FlexyPool support the Dropwizard Metrics package renaming

java-interview-questions-answers

Introduction FlexyPool relies heavily on Dropwizard (previously Codahale) Metrics for monitoring the connection pool usage. Being integrated into Dropwizard, the package name was bound to be renamed. So instead of com.codahale.metrics the 4.0.0 release will use the io.dropwizard.metrics package name. The challenge Apart from the obvious backward incompatibility, the most challenging aspect of this change is that the Maven dependency ...

Read More »

How to monitor a Java EE DataSource

java-interview-questions-answers

Introduction FlexyPool is an open-source framework that can monitor a DataSource connection usage. This tool come out of necessity, since we previously lacked support for provisioning connection pools. FlexyPool was initially designed for stand-alone environments and the DataSource proxy configuration was done programmatically. Using Spring bean aliases, we could even substitute an already configured DataSource with the FlexyPool Metrics-aware proxy ...

Read More »

How does Hibernate Query Cache work

jboss-hibernate-logo

Introduction Now that I covered both Entity and Collection caching, it’s time to investigate how Query Caching works. The Query Cache is strictly related to Entities and it draws an association between a search criteria and the Entities fulfilling that specific query filter. Like other Hibernate features, the Query Cache is not as trivial as one might think. Entity model ...

Read More »

How does Hibernate READ_WRITE CacheConcurrencyStrategy work

jboss-hibernate-logo

Introduction In my previous post, I introduced the NONSTRICT_READ_WRITE second-level cache concurrency mechanism. In this article, I am going to continue this topic with the READ_WRITE strategy. Write-through caching NONSTRICT_READ_WRITE is a read-through caching strategy and updates end-up invalidating cache entries. As simple as this strategy may be, the performance drops with the increase of write operations. A write-through cache ...

Read More »

How does Hibernate NONSTRICT_READ_WRITE CacheConcurrencyStrategy work

jboss-hibernate-logo

Introduction In my previous post, I introduced the READ_ONLY CacheConcurrencyStrategy, which is the obvious choice for immutable entity graphs. When cached data is changeable, we need to use a read-write caching strategy and this post will describe how NONSTRICT_READ_WRITE second-level cache works. Inner workings When the Hibernate transaction is committed, the following sequence of operations is executed: First, the cache ...

Read More »

How does Hibernate Collection Cache work

jboss-hibernate-logo

Introduction Previously, I described the second-level cache entry structure, Hibernate uses for storing entities. Besides entities, Hibernate can also store entity associations and this article will unravel the inner workings of collection caching.       Domain model For the up-coming tests we are going to use the following entity model: A Repository has a collection of Commit entities: @org.hibernate.annotations.Cache( ...

Read More »

How to optimize Hibernate EllementCollection statements

jboss-hibernate-logo

Introduction Hibernate supports three data mapping types: basic (e.g String, int), Embeddable and Entity. Most often, a database row is mapped to an Entity, each database column being associated to a basic attribute. Embeddable types are more common when combining several field mappings into a reusable group (the Embeddable being merged into the owning Entity mapping structure). Both basic types ...

Read More »

How does Hibernate READ_ONLY CacheConcurrencyStrategy work

jboss-hibernate-logo

Introduction As I previously explained, enterprise caching requires diligence. Because data is duplicated between the database (system of record) and the caching layer, we need to make sure the two separate data sources don’t drift apart. If the cached data is immutable (neither the database nor the cache are able modify it), we can safely cache it without worrying of ...

Read More »
Want to take your Java Skills to the next level?
Grab our programming books for FREE!
  • Save time by leveraging our field-tested solutions to common problems.
  • The books cover a wide range of topics, from JPA and JUnit, to JMeter and Android.
  • Each book comes as a standalone guide (with source code provided), so that you use it as reference.
Last Step ...

Where should we send the free eBooks?

Good Work!
To download the books, please verify your email address by following the instructions found on the email we just sent you.