Preloader image

Este exemplo tem como objetivo simular uma campanha de benchmark no JPA.

Primeiro, você executará seu aplicativo e perceberá que precisa de um L2 cache para estar em conformidade com o SLA (Service Level Agreement).

Então, você altera sua configuração persistence.xml e reinicia sua aplicação, você espera um pouco porque está usando o OpenEJB;)… mas você espera.

Portanto, para tentar ir mais rápido em uma campanha longa, basta alterar sua configuração em tempo de execução para testá-la e, quando funcionar, alterar seu arquivo de configuração para manter a modificação.

Para fazer isso, podemos simplesmente usar o JMX.

O OpenEJB registra automaticamente um MBean por entitymanager (persistence unit).

Ele permite que você altere as propriedades do persistence unit, mesmo que mais seja possível.

Testando

O teste é simples: persistimos uma entidade, a consultamos três vezes sem cache, então ativamos o cache e realizamos a execução novamente consulta que um é suficiente para fazer o mesmo.

Saída

Na saída, encontramos as 3 partes descritas antes.

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