Java2005. 3. 22. 11:02
오늘 hibernate.org에서 보긴 했는데 어디에 쓰이고 어떤것인지 확실히 느낌이 안오네요.

아시는분들은 설명 좀 부탁드립니다~


2004-10-19 12:05:59.0 (jini 219.248.234.138) D

오늘 다시 보고 간략하게 정리해 보았습니다. 틀린 부분 있으면 지적해 주세요.

Java같은 객체 지향언어의 데이터 단위는 Object입니다.

하지만 이것은 머쉰의 로컬 매모리의 존재하는 형태이고 이를 보존하기 위해서는 하드디스크 같은 보조 기억 장치에 저장해야합니다. 저장은 저수준 IO나 DBMS(오라클 같은)를 사용합니다. 저수준 IO는 일정 형태로 저장했다가 불러올때 다시 Object로 만들어주어야 하는 문제점이 있습니다.

예를 들어
Class Cake {
String maker;
Date maden;
int type;
}
다음 객체를 저장하려면 maker,maen,type 속성을 디스크에 저장한다음에 이를다시 읽어서 위와 같은 객체를 생성해 주어야합니다.
Cake my = new Cake();
my.setMaker(...);
my.setDate(...);
my.setType(...);

현재 널리쓰이고있는 관계형 데이터베이스 또한 이 작업을 해주어야 합니다.

하이버네이트는 객체를 데이터베이스화 할 수 있는 기술입니다. Insert, Remove, Update, Search... 를 할 수 있습니다. 다음은 hibernate.org의 예제 입니다.

Transaction tx = session.beginTransaction(); Query query = session.createQuery("select c from Cat as c where c.sex = :sex"); query.setCharacter("sex", 'F');

for (Iterator it = query.iterate(); it.hasNext();) {
Cat cat = (Cat) it.next(); <--
out.println("Female Cat: " + cat.getName() );
}
tx.commit();

<-- 부분을 보면 객체에 바로 assign하고 있는것을 알 수 있습니다. HQL(Hibernate Query Language)를 사용하고 있지만, 매우 SQL과 비슷하여 손쉽게 사용할 수 있습니다.

또한 객체의 모든 특징 inhertance, polymophism, abstract등을 모두 보존할 수있습니다. 현재의 하이버네이트는 웹어플리케이션 뿐만아니라 단독실행형 어플리케이션에도 사용할 수있고, 어플리케이션 서버와 DBMS에 독립적입니다.

참조사이트
hibernate.org

2004-11-06 14:22:36.0 (papilla 220.69.219.183) D

정말 저 코드 만으로 동작한다면 겁나게 편리하겠군요 ;ㅂ;

전 XML 시리얼라이저를 따로 만들거나, 빈 시리얼 라이저를 이용해서 XML DB같은곳에 보존하곤 했었는데. (뭔가 깔끔한 맛이 없죠)

Cat클래스를 만들, 때따로 해줘야 하는 일은 없나요?

몇 번 요런 녀석이 갖고 싶어서, 시도해본 적이 있었는데, 가장 큰 난제는 서로 연관된 객체가, DB에 저장되었다가 복구될 때, 그 둘의 관계를 안전하게 회복하는 일, 그리고DB의 일부분이 다른 부분으로 복제(clone)될때, 관계도 안전하게 복제하는 일등이 일반화 되지 않더군요... 결국 보존될수 있는 객체들은 다소 까다로운 인터페이스를 지키게끔 했었습니다...
Posted by la30321