Quantcast
Channel: Programação - GUJ
Viewing all articles
Browse latest Browse all 33090

Select column from table com Hibernate, Criteria, HQL

$
0
0

@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

Ler tópico completo


Viewing all articles
Browse latest Browse all 33090


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>