하이버네이트/JPA - 자바의 ORM.

06. 드디어 정식강좌! HQL부터 시작!

지금까지 계속 뭔가 테스트와 하이버네이트에 흥미를 붙이긴 위한 소스만을 썼다면 드디어 이제 제대로 된 강좌를 만들어볼까 합니다. (하지만 이것도 타국의 영상 번역정도에 불과하다는....;;;)
HQL! Hibernate Query Language 설명부터 들어갑니다!

본 영상은 맨밑 하단의 참조영상의 외국 튜토리얼 두개짜리를 짧게 한국말로 풀어만든 것에 불과합니다.
더 깊게 공부하실 분은 참조링크 혹은 서적을 참고해주시면 되겠습니다 :) 
오늘 공부 : 기존의 SQL을 하이버네이트 쿼리 랭귀지로 바꿔보고, SQL Injection을 막는 방법으로, HQL에 동적 변수를 매핑하는 방법을 배워봅니다. 

 

참고 링크 : 

하이버네이트 docs HQL 편: 

https://docs.jboss.org/hibernate/orm/4.3/devguide/en-US/html/ch11.html

MKyong.com 튜토리얼 : http://www.mkyong.com/hibernate/hibernate-query-examples-hql/

참조영상 (이번 영상은 거의 참조영상의 번역과 시간줄인 것에 가까움) 

HQL 소개 http://www.youtube.com/watch?v=Em4M2tUn1bU&list=PL5757A5DB24A40BDC&index=25

HQL 과 sql바인딩 : http://www.youtube.com/watch?v=PiahhQ0Qkak&list=PL5757A5DB24A40BDC&index=27

소스

UserDetail 소스..(이것도 적어야할까요;; 음.) 
package chap06.hql;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class UserDetail {

    
	@Id
	@GeneratedValue
	private int id;
	
	private String userName;
	
	public UserDetail() {
	}

	public UserDetail(String userName) {
		super();
		this.userName = userName;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	@Override
	public String toString() {
		return "UserDetail [id=" + id + ", userName=" + userName + "]";
	}
}

 

 
 

테스트 소스 

@Test
    public void test() {
		DaoCommon<UserDetail> daoUserDetail = new DaoCommon<UserDetail>(UserDetail.class);
		
		for(int i=0; i<10;i++){
			daoUserDetail.insert(new UserDetail("User"+i));
		}
		SessionFactory factory = HibernateTestUtil.getSessionFactory(UserDetail.class);
		Session session = factory.getCurrentSession();
		session.beginTransaction();
		
		//String minUserid= "5 or 1=1";
		//Query query = session.createQuery("from UserDetail where id> "+minUserid);
		/*Query query = session.createQuery("from UserDetail where id> ? and userName = ?");
		String minUserid= "5";
		query.setInteger(0, Integer.parseInt(minUserid));
		query.setString(1, "User9");*/
		
		String minUserid= "5";
		Query query = session.createQuery("from UserDetail where id> :userId and userName = :userName");
		query.setInteger("userId", Integer.parseInt(minUserid));
		query.setString("userName", "User9");
		
		List<UserDetail> list = query.list();
		session.getTransaction().commit();
		
		for (UserDetail userDetail : list) {
			System.out.println(userDetail);
		}	
	}

 

 

 

 

댓글

댓글 본문
  1. 굿데이
    감사합니당.
  2. LEE SCOTT
    잘보고 있습니다^^
  3. Scratchback
    잘 보고 있습니다. 감사합니다(6)
버전 관리
아라한사
현재 버전
선택 버전
graphittie 자세히 보기