오늘 보실 것은.. 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()); }