Glauber Andrade wrote:
Hi,
I have the table "Service" with 450 registers, when I try to get all objects it takes 4 seconds running in a Athlon XP2800+ 256Mb (ojb rc5). It is too slow.
How could I improve it ?
Service class is "really heavy" including four 1:1 and one 1:n reference (and referenced objects itself reference objects...). By default auto-retrieve for references is enabled. This means that each Service object was materialized with all references (and all reference of the references...).
You can disable auto-retrieve in field-descriptor and only load the references when data is needed or you want update Service using
PB.retrieveReference
PB.retrieveAllReferences
or you can introduce proxy objects for your references. See
http://db.apache.org/ojb/tutorial3.html#Using Proxy Classes
Then OJB creates a proxy object for the reference and only load real objects when needed.
regards, Armin
Thanks,
Query query = new QueryByCriteria(Service.class, null);
Iterator iter = broker.getIteratorByQuery(query);
<!-- Definitions for com.maximas.Service -->
<class-descriptor
class="com.maximas.sinret.data.Service"
table="Service"
>
<field-descriptor
name="id"
column="id"
jdbc-type="INTEGER"
primarykey="true"
autoincrement="true"
/>
<field-descriptor
name="servico"
column="SERVICO"
jdbc-type="LONGVARCHAR"
/>
<field-descriptor
name="id_leiIRRF"
column="id_leiIRRF"
jdbc-type="VARCHAR"
/>
<reference-descriptor
name="leiIRRF"
class-ref="com.maximas.Lei"
>
<foreignkey field-ref="id_leiIRRF"/>
</reference-descriptor>
<field-descriptor
name="id_leiINSS"
column="id_leiINSS"
jdbc-type="VARCHAR"
/>
<reference-descriptor
name="leiINSS"
class-ref="com.maximas.Lei"
>
<foreignkey field-ref="id_leiINSS"/>
</reference-descriptor>
<field-descriptor
name="irrf"
column="IRRF"
jdbc-type="DOUBLE"
/>
<field-descriptor
name="inss"
column="INSS"
jdbc-type="DOUBLE"
/>
<collection-descriptor
name="iss"
element-class-ref="com.maximas.ISS"
refresh="true"
orderby="cidade"
sort="DESC"
>
<inverse-foreignkey field-ref="id_servico"/>
</collection-descriptor>
<field-descriptor
name="id_contabil_PF"
column="id_contabil_PF"
jdbc-type="INTEGER"
/>
<reference-descriptor
name="contabil_PF"
class-ref="com.maximas.Contabil"
>
<foreignkey field-ref="id_contabil_PF"/>
</reference-descriptor>
<field-descriptor
name="id_contabil_PJ"
column="id_contabil_PJ"
jdbc-type="INTEGER"
/>
<reference-descriptor
name="contabil_PJ"
class-ref="com.maximas.Contabil"
>
<foreignkey field-ref="id_contabil_PJ"/>
</reference-descriptor>
<field-descriptor
name="temISS"
column="temISS"
jdbc-type="INTEGER"
/>
<field-descriptor
name="temPISCOFINS"
column="temPISCOFINS"
jdbc-type="INTEGER"
/>
</class-descriptor>
<!-- Definitions for com.maximas.Lei -->
<class-descriptor
class="com.maximas.Lei"
table="leis"
>
<field-descriptor
name="id"
column="id"
jdbc-type="VARCHAR"
primarykey="true"
/>
<field-descriptor
name="lei"
column="LEI"
jdbc-type="LONGVARCHAR"
/>
<field-descriptor
name="id_pai"
column="id_pai"
jdbc-type="VARCHAR"
/>
<reference-descriptor
name="pai"
class-ref="com.maximas.Lei"
>
<foreignkey field-ref="id_pai"/>
</reference-descriptor>
</class-descriptor>
<!-- Definitions for com.maximas.Contabil -->
<class-descriptor
class="com.maximas.Contabil"
table="contabil"
>
<field-descriptor
name="id"
column="id"
jdbc-type="INTEGER"
primarykey="true"
autoincrement="true"
/>
<field-descriptor
name="plano_conta"
column="plano_conta"
jdbc-type="VARCHAR"
/>
<field-descriptor
name="conta"
column="conta"
jdbc-type="VARCHAR"
/>
<field-descriptor
name="plano_centro"
column="plano_centro"
jdbc-type="VARCHAR"
/>
<field-descriptor
name="centro"
column="centro"
jdbc-type="VARCHAR"
/>
<field-descriptor
name="unidade"
column="unidade"
jdbc-type="VARCHAR"
/>
<field-descriptor
name="fluxo"
column="fluxo"
jdbc-type="VARCHAR"
/>
</class-descriptor>
<!-- Definitions for com.maximas.ISS -->
<class-descriptor
class="com.maximas.ISS"
table="iss"
>
<field-descriptor
name="id"
column="id"
jdbc-type="INTEGER"
primarykey="true"
autoincrement="true"
/>
<field-descriptor
name="id_servico"
column="id_servico"
jdbc-type="INTEGER"
/>
<reference-descriptor
name="servico"
class-ref="com.maximas.Service"
>
<foreignkey field-ref="id_servico"/>
</reference-descriptor>
<field-descriptor
name="id_cidade"
column="id_cidade"
jdbc-type="INTEGER"
/>
<reference-descriptor
name="cidade"
class-ref="com.maximas.Cidade"
>
<foreignkey field-ref="id_cidade"/>
</reference-descriptor>
<field-descriptor
name="iss"
column="iss"
jdbc-type="DOUBLE"
/>
</class-descriptor>
<!-- Definitions for com.maximas.Cidade -->
<class-descriptor
class="com.maximas.idade"
table="cidades"
>
<field-descriptor
name="id"
column="id"
jdbc-type="INTEGER"
primarykey="true"
autoincrement="true"
/>
<field-descriptor
name="cidade"
column="cidade"
jdbc-type="VARCHAR"
/>
<field-descriptor
name="reter"
column="reter"
jdbc-type="INTEGER"
/>
<field-descriptor
name="mesmo"
column="mesmo"
jdbc-type="INTEGER"
/>
<field-descriptor
name="desconto"
column="desconto"
jdbc-type="DOUBLE"
/>
<field-descriptor
name="id_uf"
column="id_uf"
jdbc-type="INTEGER"
/>
<reference-descriptor
name="uf"
class-ref="com.maximas.UF"
>
<foreignkey field-ref="id_uf"/>
</reference-descriptor>
</class-descriptor>
<!-- Definitions for com.maximas.UF -->
<class-descriptor
class="com.maximas.UF"
table="ufs"
>
<field-descriptor
name="id"
column="id"
jdbc-type="INTEGER"
primarykey="true"
autoincrement="true"
/>
<field-descriptor
name="UF"
column="uf"
jdbc-type="VARCHAR"
/>
<collection-descriptor
name="cidades"
element-class-ref="com.maximas.Cidade"
orderby="cidade"
sort="DESC"
>
<inverse-foreignkey field-ref="id_uf"/>
</collection-descriptor>
</class-descriptor>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
