= Reload Persistence Unit Properties
:jbake-date: 2016-09-06
:jbake-type: page
:jbake-tomeepdf:
:jbake-status: published

Example reload-persistence-unit-properties can be browsed at https://github.com/apache/tomee/tree/master/examples/reload-persistence-unit-properties


This example aims to simulate a benchmark campaign on JPA.

First you'll run your application then you'll realize you could need L2 cache to respect your SLA.

So you change your persistence.xml configuration, then restart your application,
you wait a bit because you are using OpenEJB ;)...but you wait...

So to try to go faster on long campaign simply change your configuration at runtime to test it then when it works change
your configuration file to keep the modification.

To do it we can simply use JMX.

OpenEJB automatically register one MBeans by entitymanager (persistence unit).

It allows you mainly to change your persistence unit properties even if more is possible.

==  The test itself

The test is simple: we persist an entity, we query it three times without cache then we activate cache and realize
running again our queries that one is enough to do the same.

=  The output

In the ouput we find the 3 parts described just before.

    INFO - TEST, data initialization
    DEBUG - <t 1523828380, conn 93608538> executing stmnt 1615782385 CREATE TABLE Person (id BIGINT NOT NULL, name VARCHAR(255), PRIMARY KEY (id))
    DEBUG - <t 1523828380, conn 93608538> [1 ms] spent
    DEBUG - <t 1523828380, conn 1506565411> executing prepstmnt 668144844 INSERT INTO Person (id, name) VALUES (?, ?) [params=?, ?]
    DEBUG - <t 1523828380, conn 1506565411> [0 ms] spent
    INFO - TEST, end of data initialization


    INFO - TEST, doing some queries without cache
    DEBUG - <t 1523828380, conn 1506565411> executing prepstmnt 1093240870 SELECT t0.name FROM Person t0 WHERE t0.id = ? [params=?]
    DEBUG - <t 1523828380, conn 1506565411> [0 ms] spent
    DEBUG - <t 1523828380, conn 1506565411> executing prepstmnt 1983702821 SELECT t0.name FROM Person t0 WHERE t0.id = ? [params=?]
    DEBUG - <t 1523828380, conn 1506565411> [0 ms] spent
    DEBUG - <t 1523828380, conn 1506565411> executing prepstmnt 1178041898 SELECT t0.name FROM Person t0 WHERE t0.id = ? [params=?]
    DEBUG - <t 1523828380, conn 1506565411> [1 ms] spent
    INFO - TEST, queries without cache done


    INFO - TEST, doing some queries with cache
    DEBUG - <t 1523828380, conn 1506565411> executing prepstmnt 1532943889 SELECT t0.name FROM Person t0 WHERE t0.id = ? [params=?]
    DEBUG - <t 1523828380, conn 1506565411> [0 ms] spent
    INFO - TEST, queries with cache done



