@gustavodefreitasmene escreveu:
Boa tarde!
Tenho uma aplicação que utiliza o Hibernate e estou precisando melhorar a performance.Observei que todas as minhas queries estão carregando todos os dados da tabela (Classe mapeada no hibernate),
mas em 99% das vezes só preciso do código e descrição desta Classe.Gostaria de saber se alguém pode me ajudar a melhorar estas queries para eu ganhar performance no meu sistema
segue abaixo Classe mapeada e DAO
Classe TrFiscal
@Entity
@Table(name = "TR_FISCAL", catalog = "", schema = "TRANSPORTE")
@Data @AllArgsConstructor @NoArgsConstructor
@NamedQueries({@NamedQuery(name = "TrFiscal.findAll", query = "SELECT f FROM TrFiscal f")})
public class TrFiscal implements Serializable {private static final long serialVersionUID = 1L; @Id @SequenceGenerator(name = "SEQTR_FISCALFISC_CODIGO", sequenceName = "SE_TR_FISCAL", allocationSize=1) @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQTR_FISCALFISC_CODIGO") @Basic(optional = false) @Column(name = "FISC_CODIGO", nullable = false) private Long fiscCodigo; @Basic(optional = false) @Column(name = "FISC_MATRICULA", unique = true, nullable = false) private Long fiscMatricula;
@JoinColumn(name = "PESS_CODIGO", referencedColumnName = "PESS_CODIGO", nullable = false)
@ManyToOne(optional = false, cascade=CascadeType.ALL)
private TrPessoa pessCodigo;}
Classe TrPessoa
@Entity
@Table(name = "TR_PESSOA", catalog = "", schema = "TRANSPORTE")
@Data @AllArgsConstructor @NoArgsConstructor
public class TrPessoa implements Serializable {private static final long serialVersionUID = 1L; @Id @SequenceGenerator(name = "SEQTR_PESSOAPESS_CODIGO", sequenceName = "SE_TR_PESSOA", allocationSize=1) @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQTR_PESSOAPESS_CODIGO") @Basic(optional = false) @Column(name = "PESS_CODIGO", nullable = false) private Long pessCodigo; @Basic(optional = false) @Column(name = "PESS_NOME", nullable = false, length = 100) private String pessNome; @Column(name = "PESS_CPF") private String pessCpf;
// outros campos mapeados
}Classe TrFiscalDAOImpl
public class TrFiscalDaoImpl extends GenericDao implements TrFiscalDao {
// outros metodos
@Override
public List listAll() {
DetachedCriteria criterio = DetachedCriteria.forClass(TrFiscal.class, "entidade");
criterio.createAlias("entidade.pessCodigo", "pess");
criterio.addOrder(Order.asc("pess.pessNome"));
return findByCriteria(criterio);
}public static void main(String[] args) throws DaoException {
TrFiscalDaoImpl vDAO = new TrFiscalDaoImpl();
for (Object o : vDAO.listAll()) {
System.out.println(o);
}
}}
// query gerada pelo BD
SELECT this_.FISC_CODIGO AS FISC1_9_1_,
this_.FISC_MATRICULA AS FISC2_9_1_,
this_.PESS_CODIGO AS PESS3_9_1_,
pess1_.PESS_CODIGO AS PESS1_29_0_,
pess1_.CADA_CODIGO AS CADA2_29_0_,
pess1_.PESS_CNPJ AS PESS3_29_0_,
pess1_.PESS_CPF AS PESS4_29_0_,
pess1_.PESS_FONE AS PESS5_29_0_,
pess1_.PESS_FOTO AS PESS6_29_0_,
pess1_.PESS_LOGIN AS PESS7_29_0_,
pess1_.PESS_NOME AS PESS8_29_0_
FROM TRANSPORTE.TR_FISCAL this_
INNER JOIN TRANSPORTE.TR_PESSOA pess1_
ON this_.PESS_CODIGO=pess1_.PESS_CODIGO
ORDER BY pess1_.PESS_NOME ASC
Mensagens: 2
Participantes: 2