Srs.
Gostaria de entender o que ocorre no trecho de código abaixo:
System.out.println("DEBUG: Inicio CargoTabela");
EntityManagerFactory emf = Persistence.createEntityManagerFactory("SACPU");
System.out.println("DEBUG: Criou o EMF");
EntityManager em = emf.createEntityManager();
System.out.println("DEBUG: Criou o EM");
em.getTransaction().begin();
System.out.println("DEBUG: em.begin");
Query query = em.createNamedQuery("TcargoFuncEmpr.findAll");
System.out.println("DEBUG: createNamedQuery");
em.close();
No meu persistence.xml existem 2 classes POJO declaradas.
E no Construtor de cada uma eu mandei printar um "Instanciando classe… ":
Persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="SACPU" transaction-type="RESOURCE_LOCAL">
<provider>oracle.toplink.essentials.PersistenceProvider</provider>
<class>lib.database.TcargoFuncEmpr</class>
<class>lib.database.TpssoaRlcndSist</class>
<properties>
<property name="toplink.jdbc.user" value="root"/>
<property name="toplink.jdbc.password" value="as13a3"/>
<property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/SAC"/>
<property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="toplink.ddl-generation" value="drop-and-create-tables"/>
</properties>
</persistence-unit>
</persistence>
Construtor das classes:
TpssoaRlcndSist
public TpssoaRlcndSist() {
System.out.println("Instanciando TpssoaRlcndSist");
}
TcargoFuncEmpr
public TcargoFuncEmpr() {
System.out.println("Instanciando TpssoaRlcndSist");
}
Agora, a Saída gerada quando o código é executado:
init:
deps-jar:
compile-single:
run-single:
DEBUG: Inicio CargoTabela
DEBUG: Criou o EMF
[TopLink Info]: 2008.10.09 12:15:56.882--ServerSession(22201561)--TopLink, version: Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))
Instanciando TpssoaRlcndSist
[TopLink Info]: 2008.10.09 12:15:58.054--ServerSession(22201561)--file:/C:/Documents%20and%20Settings/eguimaraes/Meus%20documentos/NetBeansProjects/SAC/build/classes/-SACPU login successful
DEBUG: Criou o EM
DEBUG: em.begin
DEBUG: createNamedQuery
CONSTRUÍDO COM SUCESSO (tempo total: 5 segundos)
Porque a classe TpossaRlcndSist foi instanciada e a TcargoFuncEmpr não?
Para mim, mistério…