오늘 보실 것은.. Projection 과 추가쿼리에 대한 내용입니다. :)
1. 크리테리아에 프로젝션 추가해보기
2. 네임드 쿼리
3. 네이티브 쿼리
4. Example 로 쿼리 날리는 방법... 해보았습니다.(근데 Example 에서 잘 안 뽑히네요;;) 음;
chap07 패키지의 Test_Student 에서 메소드를 더 만들며 조금 더 더 확장했을 뿐입니다.
소스
// Projection
//Link : https://docs.jboss.org/hibernate/orm/3.6/javadocs/org/hibernate/criterion/Projections.html
@Test
public void projection() throws Exception {
Session session = factory.getCurrentSession();
session.beginTransaction();
Criteria criteria = session.createCriteria(Student.class);
double avg = (double) criteria.setProjection(Projections.avg("kor")).uniqueResult();
System.out.println("국어점수 평균 : "+avg);
session.getTransaction().commit();
}
//NamedQuery
//http://www.youtube.com/watch?v=o_P-p2b_k6w&index=28&list=PL5757A5DB24A40BDC
@Test
public void namedQuery() throws Exception {
Session session = factory.getCurrentSession();
session.beginTransaction();
Query query = session.getNamedQuery("FindByAge");
query.setInteger(0, 25);
List<Student> list = query.list();
System.out.println("나이가 25살이상인 학생 ");
list.forEach(n-> System.out.println(n));
session.getTransaction().commit();
}
//Native Query
//http://www.mkyong.com/hibernate/hibernate-native-sql-queries-examples/
@Test
public void nativeQuery() throws Exception {
Session session = factory.getCurrentSession();
session.beginTransaction();
Query query = session.createSQLQuery("SELECT * FROM \"USER\".\"STUDENT\"").addEntity(Student.class);
List<Student> list = query.list();
session.getTransaction().commit();
System.out.println("일반 그냥 순수 쿼리로 뽑은 것 ");
for (Student student : list) {
System.out.println(student);
}
}
//Example Query
// http://www.youtube.com/watch?v=2DXjdl8gzOo&list=PL5757A5DB24A40BDC&index=31
//왜 안되는지 모르겠음(무책임)
@Test
public void exampleQuery() throws Exception {
Session session = factory.getCurrentSession();
session.beginTransaction();
Student student = new Student();
student.setName("제시카");
Criteria criteria = session.createCriteria(Student.class);
Example example= Example.create(student);
criteria.add(example);
List<Student> list = criteria.list();
session.getTransaction().commit();
System.out.println("샘플로 얻어진 객체 보여주기");
list.forEach(n->System.out.println(n));
System.out.println("리스트 사이즈 "+list.size());
}

