Como inicializo o toplink durante o carregamento da JVM.
[TopLink Info]: 2008.07.17 10:21:30.328--ServerSession(31161848)--TopLink, version: Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))
Como inicializo o toplink durante o carregamento da JVM.
[TopLink Info]: 2008.07.17 10:21:30.328--ServerSession(31161848)--TopLink, version: Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))
Como realizo uma tarefa durante o carregamento da JVM, logo no início da execução do aplicativo Java.
Colocando o código no início do main() ?
Mauricio,
Como eu inicializo o toplink JPA? É através do método Persistence.createEntityManagerFactory?
Depende, não é a sua aplicação que cria o EntityManagerFactory?
Se ela criar, basta você mesmo criar o EntityManagerfactory com essa chamada e pronto.
Maurício,
Quando eu faço uma busca pela primeira vez é quando ele se inicializa. Na segunda vez em diante é mais rápido.
[TopLink Info]: 2008.07.17 04:15:37.546--ServerSession(19610963)--TopLink, version: Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))
Tem como eu forçar a inicialização dele?
Aqui está a minha classe.
public final class PersistenceUtil {
private static final String UNIT_NAME = "jpa-teste";
private static EntityManagerFactory emf = Persistence.createEntityManagerFactory(UNIT_NAME);
public static final ThreadLocal<EntityManager> managerThread = new ThreadLocal<EntityManager>();
public static final ThreadLocal<EntityTransaction> transactionThread = new ThreadLocal<EntityTransaction>();
public static EntityManager getEntityManager() {
if (managerThread.get() == null) {
EntityManager em = emf.createEntityManager();
managerThread.set(em);
}
return managerThread.get();
}
public static EntityTransaction getEntityTransaction() {
if (transactionThread.get() == null) {
EntityTransaction transaction = getEntityManager().getTransaction();
transactionThread.set(transaction);
}
return transactionThread.get();
}
public static void startJPAOperation() {
getEntityTransaction().begin();
}
public static void stopJPAOperation( boolean commitChanges) {
if (commitChanges) {
getEntityTransaction().commit();
} else {
getEntityTransaction().rollback();
}
getEntityManager().close();
transactionThread.remove();
managerThread.remove();
}
}
No Início do seu main:
vou tentar aqui.
Eu chamei PersistenceUtil.getEntityManager() e funcionou.
Valeu.