Reescrevi aqui um bem basico para fazer simulacoes sem praticamente configuracao nenhuma. mas ocorre a mesma coisa. Vou postar as entidades desse que reescrevi. Enquanto nao tinha relacionamentos funcionou perfeito nao dava nem 1 segundo. Coloquei os relacionamento comecou a fazer um select para cada linha da tabela produto.
`
@Entity
public class Produto implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private Long codigoEan;
private String descricao;
private String descricaoReduzida;
private Boolean bloqueiaVenda;
private Boolean excluido;
}
`
`
@Entity
public class Empresa implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String razaoSocial;
private String nomeFantasia;
private String cnpj;
public Empresa() {
}
}
`
`
@Entity
public class ProdutoEmpresa implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@ManyToOne
private Produto produto;
@ManyToOne
private Empresa empresa;
private BigDecimal precoVenda;
private BigDecimal precoPromocao;
public ProdutoEmpresa() {
}
}
`
`
public class ProdutoDao implements Serializable {
public List<ProdutoEmpresa> listar() {
Session sessao = HibernateUtil.getInstance().getSession();
Query q = sessao.createQuery("select p from ProdutoEmpresa p");
List<ProdutoEmpresa> produtos = q.list();
sessao.flush();
HibernateUtil.getInstance().fecharSessao(sessao);
return produtos;
}
}
@ViewScoped
@ManagedBean
public class ProdutoController implements Serializable {
private Produto produto;
private List<ProdutoEmpresa> produtos;
private final ProdutoDao produtoDao = new ProdutoDao();
public ProdutoController() {
}
public String getCodigoEan() {
return codigoEan;
}
public String getDescricao() {
return descricao;
}
public Produto getProduto() {
return produto;
}
public List<ProdutoEmpresa> getProdutos() {
return produtos;
}
public void listar() {
long t1 = System.currentTimeMillis();
produtos = produtoDao.listar();
for (ProdutoEmpresa p : produtos) {
System.out.println(p.getProduto().getCodigoEan() + ";" + p.getProduto().getDescricao() + ";" + p.getProduto().getId() + ";"
+ (p.getProduto().getBloqueiaVenda() == true ? "SIM" : "NAO") + ";" + (p.getProduto().getExcluido() == true ? "SIM" : "NAO") + ";"
+ p.getPrecoVenda() + ";" + p.getPrecoPromocao());
}
long t2 = System.currentTimeMillis();
System.out.println("TEMPO DE EXECUCAO:\t" + ((t2 - t1) / 100) / 60);
}
}
`