| Hibernate |
하이버네이트를 시작하기 위한 기본설정을 해봅시다.
Eclipse Galileo
Java 1.6.0_16
Tomcat 6.0.14
http://www.hibernate.org 에서 라이브러리와 플러그인을 다운로드 받습니다. |
하이버네이트 플러그인(Hibernate Tools)은 이클립스 플러그인 설치를 이용해서 합니다. |
업데이트 주소는 하이버네이트 홈페이지에서 HIBERNATE Tools 부분에 링크 되어있습니다.
업데이트 주소 : http://download.jboss.org/jbosstools/updates/stable
마지막에 /버전이름 을 추가 할것.
플러그인이 잘 설치 되었습니다... ㄷㄷ;
이제 하이버네이트를 하기위한 최소한의 라이브러리를 세팅합시다 |
다운로드 받은 hibernate-distribution-3.3.2.GA-dist.zip 파일을 압축 해제합니다.
hibernate3.jar 와 lib\required 폴더 안의 *.jar 만 있으면 하이버네이트를 사용할 수 있습니다.
log4j 를 사용하기 위해선 slf4j-log4j12-1.5.10.jar 와 log4j-1.2.15.jar 가 필요합니다.
(설정파일 log4j.properties !!!)
마지막으로 데이터베이스에 맞는 jdbc 드라이버가 필요합니다.
하이버네이트 기본 설정 파일인 hibernate.cfg.xml 을 작성해봅시다. 이클립스 플러그인으로 생성하겠습니다.
File - New - Other... - Hibernate - Hibernate Configuration File (cfg.xml) 선택 - Next
설정파일을 저장할 경로 지정
접속 정보를 입력합니다. - Finish
접속 정보는 http://antop.tistory.com/54 에 있는 샘플 DB 입니다.
※ Database dialect 를 DB 에 알맞게 잘 골라주세요.
src 경로 아래 hibernate.cfg.xml 파일이 생성 되었습니다.
※ 플러그인을 설치하면 하이버네이트 관련 xml 파일의 아이콘이 아래 그림과 같이 표시됩니다.
파일을 열어보면 기본적으로 데이터베이스 접속 정보가 설정되어있습니다.
코드 어시스트(Ctrl + Space)를 이용해(플러그인 있어야함) 다른 설정들도 할 수 있습니다.
하이버네이트 세션(JDBC의 Connection이라고 보면 됨)을 관리해주는 클래스를 사용하도록 합시다.
HibernateUtil 클래스입니다. 하이버네이트 공식 메뉴얼에서 구한 국민 세션 관리 유틸이죠 ㅎㅎ
※ 여기까지 하셨으면 하이버네이트를 사용할 최소한의 준비는 끝났습니다.
간단한 테스트 파일을 하나 만들어서 접속 테스트 해봅시다.
다른 이무 작동 없고 접속만 했다가 끊는 소스 입니다.
HibernateUtil 을 이용해서 접속합니다.
에러 안뿜어내고 로그 나오면 잘 된겁니다. ㄷㄷ;;
마지막으로 데이터베이스에 맞는 jdbc 드라이버가 필요합니다.
하이버네이트 기본 설정 파일인 hibernate.cfg.xml 을 작성해봅시다. 이클립스 플러그인으로 생성하겠습니다.
File - New - Other... - Hibernate - Hibernate Configuration File (cfg.xml) 선택 - Next
설정파일을 저장할 경로 지정
접속 정보를 입력합니다. - Finish
접속 정보는 http://antop.tistory.com/54 에 있는 샘플 DB 입니다.
※ Database dialect 를 DB 에 알맞게 잘 골라주세요.
src 경로 아래 hibernate.cfg.xml 파일이 생성 되었습니다.
※ 플러그인을 설치하면 하이버네이트 관련 xml 파일의 아이콘이 아래 그림과 같이 표시됩니다.
파일을 열어보면 기본적으로 데이터베이스 접속 정보가 설정되어있습니다.
코드 어시스트(Ctrl + Space)를 이용해(플러그인 있어야함) 다른 설정들도 할 수 있습니다.
하이버네이트 세션(JDBC의 Connection이라고 보면 됨)을 관리해주는 클래스를 사용하도록 합시다.
HibernateUtil 클래스입니다. 하이버네이트 공식 메뉴얼에서 구한 국민 세션 관리 유틸이죠 ㅎㅎ
package util;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
public static final SessionFactory sessionFactory;
static {
try {
// Create the SessionFactory from hibernate.cfg.xml
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static final ThreadLocal<Session> session = new ThreadLocal<Session>();
public static Session getCurrentSession() throws HibernateException {
Session s = session.get();
// Open a new Session, if this thread has none yet
if (s == null) {
s = sessionFactory.openSession();
// Store it in the ThreadLocal variable
session.set(s);
}
return s;
}
public static void closeSession() throws HibernateException {
Session s = (Session) session.get();
if (s != null)
s.close();
session.set(null);
}
}
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
public static final SessionFactory sessionFactory;
static {
try {
// Create the SessionFactory from hibernate.cfg.xml
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static final ThreadLocal<Session> session = new ThreadLocal<Session>();
public static Session getCurrentSession() throws HibernateException {
Session s = session.get();
// Open a new Session, if this thread has none yet
if (s == null) {
s = sessionFactory.openSession();
// Store it in the ThreadLocal variable
session.set(s);
}
return s;
}
public static void closeSession() throws HibernateException {
Session s = (Session) session.get();
if (s != null)
s.close();
session.set(null);
}
}
※ 여기까지 하셨으면 하이버네이트를 사용할 최소한의 준비는 끝났습니다.
간단한 테스트 파일을 하나 만들어서 접속 테스트 해봅시다.
다른 이무 작동 없고 접속만 했다가 끊는 소스 입니다.
HibernateUtil 을 이용해서 접속합니다.
package app;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import util.HibernateUtil;
public class Test {
public static void main(String[] args) {
Session sess = null;
Transaction tx = null;
try {
// 세션 열기
sess = HibernateUtil.getCurrentSession();
// 트랜잭션 시작
tx = sess.beginTransaction();
// processing..
tx.commit(); // 커밋
} catch (HibernateException e) {
tx.rollback(); // 롤백
e.printStackTrace();
} finally {
// 세션 닫기
HibernateUtil.closeSession();
}
}
}
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import util.HibernateUtil;
public class Test {
public static void main(String[] args) {
Session sess = null;
Transaction tx = null;
try {
// 세션 열기
sess = HibernateUtil.getCurrentSession();
// 트랜잭션 시작
tx = sess.beginTransaction();
// processing..
tx.commit(); // 커밋
} catch (HibernateException e) {
tx.rollback(); // 롤백
e.printStackTrace();
} finally {
// 세션 닫기
HibernateUtil.closeSession();
}
}
}
에러 안뿜어내고 로그 나오면 잘 된겁니다. ㄷㄷ;;
'java IDE > hibernate' 카테고리의 다른 글
[hibernate] hibernate 예제 (0) | 2013.04.16 |
---|---|
[hibernate] 하이버네이트에 대한 토비님의 글 (0) | 2013.04.16 |