아라한사님의 공부방

08. Projection 과 기타추가쿼리

토픽 아라한사님의 공부방 > 하이버네이트/JPA

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

댓글

댓글 본문
  1. 厳 慶一
    ありがとうございます
  2. Scratchback
    잘 보고 있습니다. 감사합니다(8)