Hibernate Getting Started
  Dashboard > 프레임워크 > ... > Hibernate > Hibernate Getting Started
Community
  프레임워크 Log In | Sign Up   View a printable version of the current page.  
Added by 박재성, last edited by 박재성 on 9월 05, 2005
Labels: 
(None)

Hibernate 시작하기

Summary : 스트럿츠 프레미워크 워크북에서 다룬 Hibernate 프레임워크를 바탕으로 Hibernate를 시작할 수 있는 방법에 대하여 다룬다. 이 강좌에서는 Hibernate의 개념 및 간단한 예제를 통하여 Hibernate가 무슨 역할을 하는 놈인지 살펴보도록 하겠다.

예제 실행 방법

스트럿츠의 세부 항목을 살펴보기에 앞서 PetStore쇼핑몰 예제를 먼저 실행해보는 것이 이 절을 이해하는데 많은 도움이 될 것이다. 따라서 PetStore쇼핑몰 예제를 실행하는 방법에 대하여 살펴보도록 하겠다. 6장 예제의 디렉토리 구조를 살펴보면 다음과 같다.


6장 예제를 실행하기 위한 과정을 살펴보면 다음과 같다. MySQL, Tomcat, ANT의 설치에 관한 자세한 내용은 부록 1을 참조하기 바란다. 다음 설명은 MySQL, Tomcat, ANT가 설치되어 있다는 가정하에 설명을 진행하도록 하겠다.

1. PetStore 쇼핑몰 예제를 위한 테이블 생성 및 예제용 데이터 생성.

  • 1) chapter6 디렉토리를 보면 build.properties파일이 존재한다. 이 파일을 열어보면 MySQL데이터베이스에 대한 설정 정보를 담고 있다. 아래 부분을 자신의 데이터베이스 환경에 맞도록 수정해주면 된다.
#------------------------------------------------------------
# DB 정보
#------------------------------------------------------------
db.driver=org.gjt.mm.mysql.Driver
db.url=jdbc:mysql://localhost:3306/struts?useUnicode=true
db.userid=javajigi
db.password=javajigi
  • 2) MySQL데이터베이스를 시작한 후 프롬프트 상에서chapter6 디렉토리로 이동하여 "ant db"를 실행하면 PetStore 쇼핑몰 예제에 필요한 테이블이 생성된다. 자료실 게시판을 위한 SQL스크립트는 chapter6/resources 디렉토리 아래의 chapter6.sql, data.sql파일을 보면 된다.
  • 3) "ant db"를 실행할 때 빌드가 실패하면 두가지 원인이 있다. 첫번째는 build.properties파일의 설정정보가 맞지 않을 경우이다. build.properties파일에서 잘못된 부분을 수정한 다음 다시 실행한다. 두번째는 테이블을 drop할 때 테이블이 존재하지 않거나, 테이블을 생성할 때 테이블이 이미 존재할 때 발생한다. 이때는 에러 메시지에 따라 drop SQL의 주석을 추가하거나 제거해주면 된다.

2. Hibernate 프레임워크를 위한 데이터베이스 설정.

  • 1) 앞에서 설정한 데이터베이스 설정은 PetStore쇼핑몰 예제를 위한 테이블과 데이터를 생성하기 위한 설정이였다. Hibernate프레임워크는 hibernate.cfg.xml파일에서 데이터베이스에 대한 설정을 관리한다.
  • 2) chapter6/resources/hibernateconfig 디렉토리로 이동하면 hibernate.cfg.xml파일이 존재한다. 이 파일을 열어 자신의 MySQL데이터베이스환경에 맞도록 내용을 수정해주면 된다.
<property name="connection.driver_class">org.gjt.mm.mysql.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/struts?useUnicode=true</property>
<property name="connection.username">javajigi</property>
<property name="connection.password">javajigi</property>
<property name="connection.pool_size">10</property>

설정 내용을 보면 build.properties에 설정한 내용과 같은 것을 확인할 수 있다.

3. PetStore쇼핑몰 예제를 빌드.

  • 1) PetStore쇼핑몰을 빌드하는 방법은 간단하다. 프롬프트에서 chapter6로 이동한 다음 "ant" 명령어를 실행하여 PetStore쇼핑몰 예제를 빌드한다.
  • 2) 빌드가 정상적으로 진행되면 chapter6 디렉토리 하위에 dist라는 디렉토리가 생성되면서 chapter6.war파일이 생성된다.
  • 3) 만약 시스템 환경 변수에 CATALINA_HOME 이 설정되어 있다면 CATALINA_HOME/webapps 디렉토리에 chapter6.war파일이 자동으로 디플로이 된다. 시스템 환경 변수에 CATALINA_HOME이 설정되어 있지 않다면 chapter6/dist디렉토리 아래의 chapter6.war파일을 CATALINA_HOME/webapps 에 복사한다.
  • 4) Tomcat서버를 시작한 다음 http://localhost:8080/chapter6 URL로 접근하여 PetStore쇼핑몰 예제를 테스트 할 수 있다.
  • 5) 웹 애플리케이션 기본 디렉토리 구조로 생성된 예제는 chapter6/build 디렉토리에 생성된다. 따라서 [그림 6-1]의 디렉토리 구조가 생소한 독자들은 빌드를 실행한 다음 chapter6/build 디렉토리를 참조하면 쉽게 이해할 수 있다.

4. 빌드시 주의할 점과 궁금한 점.

  • 1) 처음 빌드할 때는 상관없지만 한번 빌드한 예제의 소스를 수정한 다음 다시 빌드하고자 할 때는 Tomcat서버를 멈춘 상태에서 해야한다. 이유는 Tomcat서버가 시작된 상태일 경우 이전에 디플로이했던 디렉토리가 삭제되지 않는 문제가 발생해 빌드가 실패하는 경우가 발생하기 때문이다. 따라서 빌드는 항상 Tomcat서버가 멈춘 상태에서 실시해야 한다.
  • 2) [그림 6-1]을 보면 WEB-INF디렉토리와 컴파일된 class파일이 없는 것을 볼 수 있다. 또한 독자들이 첨부된 CD의 예제소스를 보면 web.xml, struts-config.xml, validation.xml파일들이 보이지 않는다. 이 파일들은 ANT로 빌드하면 자동생성되기 때문에 빌드를 실행한 다음 chapter6/build/WEB-INF 디렉토리에서 찾을 수 있다. 따라서 예제 소스에 보면 web.xml, struts-config.xml, validation.xml 파일들이 없다고 의아해할 필요는 없다.
  • 3) 모델 2나 스트럿츠를 기반으로한 애플리케이션을 개발하기 위해서는 기존의 모델1에 추가적으로 설정해야하는 정보가 있다. 그러나 이 장의 예제는 ANT로 빌드시 자동적으로 설정되기 때문에 추가적인 설정이 필요없다.
  • 4) 예제 소스를 독자들이 수정해보고 싶다면 src디렉토리의 예제 소스나 JSP파일을 수정한 다음 새로 빌드하면 자동 컴파일 및 war로 압축되기 때문에 독자들이 수정한 예제를 테스트해볼 수 있다.

5. 예제 테스트시 고려할 사항.

  • 1) 이 장에서 개발한 예제는 PetStore쇼핑몰은 쇼핑몰을 위한 최소한의 기능을 포함하고 있다. 특히 결제시에는 신용카드 외에도 모바일등 다양한 방법을 사용하도록 구현해야 한다. 또한 실제 쇼핑몰이라면 카테고리와 상품, 아이템의 관리와 주문 정보를 관리할 수 있는 관리자단이 필요하다.
  • 2) 이 장에서 개발한 PetStore 쇼핑몰 예제는 xPetStore에서 서비스하고 있는 PetStore예제의 기능을 기본으로 하고 있다.
  • 3) 예제를 테스트하는 사람이 개발자로 생각했기 때문에 비정상적으로 발생하는 부분까지 고려하지 않았다. 특히 세세한 자바스크립트 처리는 구현되지 않은 부분들이 있다.
  • 4) 쇼핑몰 예제에서 주문할 상품을 카트에 추가한 다음 최종 결제하기 위해서는 로그인한 상태에서 진행해야 정상적인 테스트를 진행할 수 있다.

2.2 Hibernate 설치 및 구현 예제

최근들어 XML데이터베이스가 잠시 주목을 받더니 언제 그랬느냐는 듯이 잠잠해진 형국이다. 아직도 국내 대부분의 기업들은 관계형 데이터베이스를 영구 데이터의 저장장소로 사용하고 있다. 그에 반해 소프트웨어 개발언어는 객체지향 언어들이 점차 주목받고 있는 실정이다. 몇 년전부터 자바가 그 선봉 역할을 하더니 최근에는 C#까지 등장하여 앞으로의 대세는 객체지향언어가 소프트웨어 개발에 주가될 것으로 보인다.

그러나 점점 더 빠른 소프트웨어 개발속도를 요구하는 기업환경에서 관계형 데이터베이스와 객체지향언어를 같이 사용하기에는 어려움이 많으며, 관계형 데이터를 객체형으로 바꾸는데 많은 개발시간을 요하는 것이 사실이다. 이와 같은 문제점을 해결하기 위하여 관계형 데이터와 객체형 데이터간의 변환을 지원하기 위한 많은 프레임워크들이 속속 등장하고 있다. 그 중 최근 주목을 받고 있는 것이 Hibernate ORM 프레임워크이다.

이 절에서는 Hibernate 프레임워크를 설치하는 방법과 Hibernate 프레임워크에서 제공하는 샘플 예제를 통하여 Hibernate가 동작하는 방식에 대하여 설명하도록 하겠다.

2.2.1 Hibernate 프레임워크 설치

Hibernate 프레임워크는 http://sourceforge.net/project/showfiles.php?group_id=40712에서 최신 배포판을 다운받을 수 있다. 이 책에서 사용한 Hibernate 프레임워크 버전은 2.0.3이다. 이절에서 설명하는 예제 소스 또한 위 URL에서 다운 받을 수 있다. 다운 받은 압축파일에 포함되어 있는 jar파일을 개발하는 애플리케이션의 WEB-INF/lib에 복사하면 Hibernate프레임워크를 사용하기 위한 설치가 완료되었다. Hibernate프레임워크를 사용하기 위하여 필요한 라이브러리를 다음과 같다.

  • dom4j.jar
  • cglib.jar
  • commons-beanutils.jar
  • commons-collections.jar
  • commons-lang.jar
  • commons-logging.jar
  • log4j-1.2.8.jar
  • odmg.jar

위 파일은 다운받은 압축파일에 포함되어 있다.

2.2.2 Hibernate프레임워크 설정

Hibernate프레임워크의 데이터베이스 설정은 hibernate.cfg.xml파일에서 설정한다. hibernate.cfg.xml파일을 WEB-INF/classses디렉토리에 다음과 같이 작성한다.

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">

<hibernate-configuration>

    <session-factory>
        <property name="connection.driver_class">org.gjt.mm.mysql.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/struts?useUnicode=true</property>
        <property name="connection.username">javajigi</property>
        <property name="connection.password">javajigi</property>
        <property name="connection.pool_size">10</property>        
        <property name="show_sql">true</property>
        <property name="use_outer_join">true</property>
        <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>

        <!-- Mapping files -->
        <mapping resource="Cat.hbm.xml"/>

    </session-factory>
</hibernate-configuration>

[예제 6-1]을 보면 지금까지 개발하면서 컨넥션 풀링을 사용하기 위하여 설정한 내용과 비슷하다. 대부분의 내용은 설명하지 않아도 알것으로 생각되어 색다른 부분들에 대해서만 설명하겠다.

첫번째는 dialect이라는 이름을 가지는 속성값이다. Hibernate는 대부분의 관계형 데이터베이스를 지원한다. 관계형 데이터베이스마다 쿼리를 작성하는 방법에 대해서 다른 부분이 있다. 이와 같이 각 데이터베이스별로 차이가 있는 부분들을 구현한 것이 Dialect클래스들이다. 따라서 각 데이터베이스에 해당하는 Dialect을 선택해주는 항목이다. 이 책에서는 Mysql을 관계형 데이터베이스로 사용하고 있기 때문에 MySQLDialect을 설정하였다. Mysql이외의 Dialect에 대한 정보는 다음 URL을 참조하기 바란다.

http://www.hibernate.org/hib_docs/reference/html/session-configuration.html#session-configuration-s5-1

두번째로 살펴볼 부분은 mapping항목에 대한 내용이다. Hibernate 프레임워크는 관계형 데이터와 객체형 데이터 사이의 데이터 변환을 위해 각각의 데이터들을 매핑할 필요가 있다. Hibernate프레임워크는 데이터베이스 테이블 정보와 자바 객체 사이의 매핑 정보를 XML로 관리한다. Mapping엘리먼트의 값으로 설정되어 있는 Cat.htm.xml파일이 이 매핑 정보를 포함하고 있는 파일이다. 이 파일의 자세한 내용은 뒤에서 살펴보도록 하겠다.

최근에는 데이터베이스 정보를 서버에서 설정하고 JNDI로 찾아서 사용하는 경우도 많다. 만약 JNDI에서 정보를 찾는 경우라면 hibernate.cfg.xml파일을 다음과 같이 설정하면 된다.

<property name="connection.datasource">java:comp/env/jdbc/quickstart</property>
<property name="show_sql">false</property>
<property name="use_outer_join">true</property>
<property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>

Hibernate프레임워크를 사용하기 위해서는 hibernate.cfg.xml파일에 데이터베이스 설정과 매핑 파일들을 추가해주면 된다.

2.2.3 Hibernate 프레임워크 샘플 예제

이 절의 목적은 Hibernate 프레임워크가 도대체 어떤 일을 하는 프레임워크인지를 이해하는 것이 제일 중요하기 때문에 Hibernate 프레임워크에서 제공하는 간단한 예제를 이용하도록하겠다.

예제를 구현하기 위해서는 예제에 사용할 테이블과 자바빈 클래스가 필요하다. 예제는 고양이 정보를 관리하는 CAT테이블에 Hibernate프레임워크를 이용하여 데이터를 추가, 수정, 삭제, 조회하는 방법에 대하여 살펴보도록 하겠다.

[표 6-7] CAT테이블의 컬럼 및 내용 : 샘플 예제에 사용할 고양이 정보를 관리하는 테이블

컬럼 이름 SQL 타입 내용 기타
CAT_ID VARCHAR 고양이 아이디 Primary Key
NAME VARCHAR 고양이 이름
SEX CHAR 성별
WEIGHT FLOAT 무게
package net.sf.hibernate.examples.quickstart;

public class Cat {

    private String id;
    private String name;
    private char sex;
    private float weight;

    public Cat() {
    }

    public String getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public char getSex() {
        return sex;
    }

    public void setSex(char sex) {
        this.sex = sex;
    }

    public float getWeight() {
        return weight;
    }

    public void setWeight(float weight) {
        this.weight = weight;
    }

}

Hibernate 프레임워크를 위해서는 테이블과 매핑할 자바빈 클래스가 필요하다. 자바빈 클래스는 매핑하는 테이블의 칼럼과 일치하는 속성들을 포함하고 있으며, 속성에 접근하기 위한 setter와 getter만을 가지는 클래스를 작성하면 된다. 테이블을 만들고 자바빈 클래스를 만드는 일은 익숙한 작업이기 때문에 어려울 것이 없다. Hibernate 프레임워크를 사용하기 위하여 필요한 마지막 작업은 [표6-7]의 CAT테이블과 [예제6-2]의 Cat클래스를 매핑하는 매핑파일을 작성하는 것이다. 앞에서 살펴본 Cat.hbm.xml파일이 바로 이 매핑파일이다. Cat.hbm.xml의 내용은 다음과 같다.

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping 
	PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"	"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

<hibernate-mapping>
<class name="net.sf.hibernate.examples.quickstart.Cat" table="CAT">
	<id name="id" type="string" unsaved-value="null" >
		<column name="CAT_ID" sql-type="char(32)" not-null="true"/>
		<generator class="uuid.hex"/>
	</id>        
	<property name="name">
		<column name="NAME" sql-type="varchar(16)" not-null="true"/>        
	</property>        
	<property name="sex"/>        
	<property name="weight"/>    
</class>
</hibernate-mapping>

Hibernate 프레임워크를 처음 접해보는 개발자일지라도 [예제 6-3]의 매핑파일을 보면 이 파일이 무슨 역할을 하는지 대충 알 수 있을 것이다. 파일의 내용을 보면 앞에서 생성한 Cat클래스의 정보와 CAT테이블의 정보를 매칭시키고 있는 것을 확인할 수 있다. <property/>엘리먼트는 Cat클래스의 정보를 설정하고, <column/>엘리먼트는 CAT테이블의 칼럼정보를 설정하는 것을 볼 수 있다.

이와 같이 Hibernate 프레임워크의 매핑파일의 역할은 매핑할 클래스와 테이블 사이의 관계를 매핑하는 역할을 한다. 이 매핑파일은 관계형 데이터베이스와 자바 언어 사이에 서로 다른 데이터타입을 매핑시키기 위한 목적이며, 칼럼 이름과 속성이름이 일치하지 않은 경우등 다양한 목적을 위하여 꼭 필요한 파일이다.

Hibernate 프레임워크의 매핑파일에 관한 자세한 정보는 다음 URL을 참조하기 바란다.

http://www.hibernate.org/hib_docs/reference/html/or-mapping.html

Hibernate 프레임워크 샘플 예제를 실행할 모든 준비가 완료되었다. 마지막으로 작성할 클래스는 지금까지 작성한 예제를 실행할 테스트 서블릿이다. 테스트 서블릿의 내용은 다음과 같다.

package net.sf.hibernate.examples.quickstart;

import net.sf.hibernate.*;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.ServletException;

import edu.arbor.util.plugin.HibernatePlugIn;

import java.util.*;
import java.io.IOException;
import java.io.PrintWriter;

public class TestServlet extends HttpServlet {

	//private SessionFactory sessionFactory;
	private Session session;
	private Transaction transaction;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {

		try {
			// Initialize Hibernate (Configuration and SessionFactory)
			//initHibernate();

			// Prepare out
			response.setContentType("text/html");
			PrintWriter out = response.getWriter();

			// Create some Cats
			beginTransaction();
			createCats(out);
			endTransaction(true);

			// Select all Cats
			beginTransaction();
			selectAllCats(out);
			endTransaction(false);

			// Select female Cats
			beginTransaction();
			selectFemaleCats(out);
			endTransaction(false);

		} catch (HibernateException e) {
			throw new ServletException(e);
		}

	}

	public void createCats(PrintWriter out) throws HibernateException {

		out.print("<h3>Creating Cats:</h3>");
		out.println("CREATING 'Princess'...<br/>");
		Cat princess = new Cat();
		princess.setName("Princess");
		princess.setSex('F');
		princess.setWeight(7.4f);
		session.save(princess);

		out.println("CREATING 'Max'...<br/>");
		Cat max = new Cat();
		max.setName("Max");
		max.setSex('M');
		max.setWeight(8.1f);
		session.save(max);
	}

	public void selectAllCats(PrintWriter out) throws HibernateException {

		out.print("<h3>Retrieving all Cats:</h3>");
		String queryString = "select cat from Cat as cat";
		Query query = session.createQuery(queryString);
		for (Iterator it = query.iterate(); it.hasNext();) {
			Cat cat = (Cat) it.next();
			out.println(
				"CAT: "
					+ cat.getName()
					+ " ("
					+ cat.getSex()
					+ ", "
					+ cat.getWeight()
					+ ")<br/>");
		}
	}

	public void selectFemaleCats(PrintWriter out) throws HibernateException {

		out.print("<h3>Retrieving female Cats:</h3>");
		String queryString = "select cat from Cat as cat where cat.sex = :sex";
		Query query = session.createQuery(queryString);
		query.setCharacter("sex", 'F');
		for (Iterator it = query.iterate(); it.hasNext();) {
			Cat cat = (Cat) it.next();
			out.println(
				"CAT: "
					+ cat.getName()
					+ " ("
					+ cat.getSex()
					+ ", "
					+ cat.getWeight()
					+ ")<br/>");
		}
	}

	// Helper Methods
	private void initHibernate() throws HibernateException {

		// Load Configuration and build SessionFactory
		//sessionFactory = new Configuration().configure().buildSessionFactory();
	}

	private void beginTransaction() throws HibernateException {
		session =
			((SessionFactory) getServletContext()
				.getAttribute(HibernatePlugIn.SESSION_FACTORY_KEY))
				.openSession();
		transaction = session.beginTransaction();
	}

	private void endTransaction(boolean commit) throws HibernateException {

		if (commit) {
			transaction.commit();
		} else {
			// Don't commit the transaction, can be faster for read-only operations
			transaction.rollback();
		}
		session.close();
	}
}

Hibernate 프레임워크를 사용하기 위해서는 제일먼저 hibernate.cfg.xml파일에 설정한 내용을 읽어 초기화해야한다. hibernate.cfg.xml파일의 초기화된 모든 데이터는 SessionFactory클래스에서 저장되어 관리된다.

[예제 6-4]에서 눈여겨볼 부분은 CAT테이블에 고양이 정보를 생성하고, 생성한 데이터를 조회하는 부분이다. 고양이 정보를 생성하는 부분은 다음과 같다.

Cat princess = new Cat();
princess.setName("Princess");
princess.setSex('F');
princess.setWeight(7.4f);
session.save(princess);

위 예제를 보면 소스 어느 곳에서도 SQL쿼리는 보이지 않는다. 단지 Cat클래스를 생성하여 데이터를 입력한 다음 Session객체의 save 메써드를 이용하여 생성하기만 하면 된다. 그렇다면 데이터베이스에 저장은 누가한단 말인가? 이 역할을 Hibernate 프레임워크가 한다. Hibernate프레임워크는 입력하는 클래스 이름을 통하여 초기화된 매핑정보에서 SQL쿼리를 자동생성한다. 위 소스에 의하여 자동 생성된 쿼리는 다음과 같다.

insert into CAT (NAME, sex, weight, CAT_ID) values (?, ?, ?, ?)

위 예제에서는 볼 수 없지만 고양이 아이디를 알고 있을 경우 고양이 아이디 데이터를 가져오는 부분은 다음과 같다.

Cat princess = (Cat)session.load(Cat.class, catId)

위 예제와 같이 사용하면 Hibernate프레임워크는 CAT테이블에서 고양이 아이디에 해당하는 데이터를 Cat클래스에 저장하여 반환하는 역할을 해준다.

Hibernate 프레임워크를 이용하여 데이터를 추가, 수정, 삭제, 조회하는 방법에 대해서는 다음 문서를 참조하기 바란다.

http://www.hibernate.org/hib_docs/reference/html/manipulating-data.html

[예제 6-4]에서 데이터를 가져오는 부분에서는 지금까지 많이 봐왔던 SQL쿼리 같은 구문이 보인다. 하지만 자세히 보면 SQL쿼리와는 다르다는 것을 확인할 수 있다. 이 쿼리는 Hibernate에서 만든 객체지향적인 쿼리 언어이다(HQL : Hibernate Query Language라고 부른다.). HQL을 이용하여 실행한 결과 또한 Cat클래스로 반환되는 것을 확인할 수 있다.

HQL에 대한 자세한 내용은 http://www.hibernate.org/hib_docs/reference/html/query-language.html 에서 더 자세하게 살펴볼 수 있다.

[예제 6-4]를 실행한 결과화면은 다음과 같다.

Hibernate 프레임워크는 지금까지 개발해왔던 기존 방식과는 달리 모든 데이터를 객체로 저장하고, 객체로 반환받을 수 있다. 이와 같기 때문에 개발자들이 작성할 SQL문은 적어지며, 소스코드 또한 깔끔해진다. Hibernate 프레임워크를 이용하여 개발할 경우 매핑파일만 제대로 작성하면 데이터의 추가, 수정, 삭제, 조회에 대한 디버깅은 거의 할 필요가 없기 때문에 개발속도의 향상을 가져올 수 있다. 또한 지금까지 자바를 이용함에도 불구하고 객체지향적으로 개발하지 못했던 부분들을 객체지향적으로 개발할 수 있는 발판을 마련해준다.

이 절에서는 Hibernate가 무엇이며, 어떻게 동작하는지에 대하여 간략하게 설명하였다. 이 절에서 Hibernate프레임워크에 대해 부족한 내용은 PetStore 쇼핑몰의 모델에서 개발한 예제소스를 보면 좀 더 깊이 있게 이해할 수 있을 것이다. Hibernate에 대한 자세한 사항은 Hibernate에서 제공하는 매뉴얼인 http://www.hibernate.org/hib_docs/reference/html/을 참조하기 바란다. 최근 Hibernate프레임워크가 다양한 소트프웨어 개발에 많이 사용되고 있기 때문에 Hibenate프레임워크에 관한 좋은 문서들이 많다. Hibernate프레임워크와 관련된 참고문헌들의 정보는 http://www.hibernate.org/5.html에서 얻을 수 있다.

강좌에 대하여

작성자 : OSS:박재성
작성일 : 2005년 2월 23일

문서이력 :

  • 2005년 2월 23일 박재성 문서 최초 생성

참고 자료


Site running on a free Atlassian Confluence Open Source Project License granted to JavaJiGi Project. Evaluate Confluence today.
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.3.1 Build:#643 1월 22, 2007) - Bug/feature request - Contact Administrators