I have facing performance issue using Criteria and left join . Following is my query :
Criteria crit = session.createCriteria(CuttingAssignment.class);
crit.add(Restrictions.eq("cuttingMachine", cuttingMachine));
crit.createAlias("cuttingBatch", "cuttingBatch");
crit.addOrder(Order.asc("psn"));
crit.setFetchMode("cuttingBatch", FetchMode.JOIN);
crit.setFetchMode("cuttingMachine", FetchMode.JOIN);
crit.createAlias("cuttingBatch.isolatingBatches", "cuttingBatch.isolatingBatches", Criteria.LEFT_JOIN);
crit.createAlias("cuttingBatch.isolatingBatches.assignments", "cuttingBatch.isolatingBatches.assignments", Criteria.LEFT_JOIN);
crit.createAlias("cuttingBatch.articleType", "cuttingBatch.articleType");
crit.setFetchMode("cuttingBatch.articleType", FetchMode.JOIN);
crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
List<CuttingAssignment> cuttingAssignmentList = crit.list();
Now it will execute so many sql queries in DB because of that I am facing performance issue?
What are the ways to optimize Criteria Query ? Is there any difference between the criteria and HQL query ?
Thanks in advance.