Hibernate 사용하기
1. 객체를 이용하여 저장하는 방법
Transaction tx = session.beginTransaction();
Cafe cafe = new Cafe();
cafe = new Cafe();
cafe.setId(Id);
cafe.setName(name);
session.save(cafe);
tx.commit();
2. key 값을 이용해 값이 존재하는지 확인한 후 저장하는 방법
Session session = HibernateUtil.getCurrentSession();
Cafe existCafe = (Cafe) session.get(Cafe.class, grpId);
if (existCafe == null) {
Transaction tx = session.beginTransaction();
Cafe cafe = new Cafe();
cafe = new Cafe();
cafe.setId(id);
cafe.setName(name);
session.save(cafe);
tx.commit();
System.out.println("inserted");
}
else{
System.out.println("already exist");
}
HibernateUtil.closeSession();
3. key가 아닌 값을 이용해 존재하는지 확인한 후 저장하는 방법
* createQuery 안의 문장은 SQL Query가 아니라 Hibernate에서 사용하는 HQL(Hibernate Query Language) 이다.
* 자세한 문법은 http://www.hibernate.org/hib_docs/v3/reference/ko/html/queryhql.html
Session session = HibernateUtil.getCurrentSession();
Keyword k = (Keyword) session.createQuery(
"select k from Keyword as k where keyword = ?").setString(0,
keyword).uniqueResult();
if (k == null) {
Transaction tx = session.beginTransaction();
Keyword kw = new Keyword();
kw.setKeyword(keyword);
session.save(kw);
tx.commit();
System.out.println("inserted");
} else {
System.out.println("already exist");
}
HibernateUtil.closeSession();
4. 자동 증가값 받기
* 걍 강제 casting
int id = (Integer) session.save(kw);
5. DB의 identity 컬럼 관련 XML 설정
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="net.daum.cafe.search.weblog.entity">
<class name="Keyword" table="tKeyword">
<id name="id" column="id">
<generator class="identity" />
</id>
<property name="keyword" type="string" column="keyword" />
</class>
</hibernate-mapping>
6. 복합키 관련 XML 설정
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="net.daum.cafe.search.weblog.entity">
<class name="DTBC" table="tableD">
<composite-id>
<key-property name="Id" type="int" column="Id" />
<key-property name="keywordId" type="int" column="keywordId" />
</composite-id>
<property name="count" type="int" column="count" />
</class>
</hibernate-mapping>
* 참고 : 복합키를 구현하려면 Serializable을 반드시 implements해 주어야 한다. 그렇지 않으면 'composite-id class must implement Serializable' 예외가 발생한다.
1. 객체를 이용하여 저장하는 방법
Transaction tx = session.beginTransaction();
Cafe cafe = new Cafe();
cafe = new Cafe();
cafe.setId(Id);
cafe.setName(name);
session.save(cafe);
tx.commit();
2. key 값을 이용해 값이 존재하는지 확인한 후 저장하는 방법
Session session = HibernateUtil.getCurrentSession();
Cafe existCafe = (Cafe) session.get(Cafe.class, grpId);
if (existCafe == null) {
Transaction tx = session.beginTransaction();
Cafe cafe = new Cafe();
cafe = new Cafe();
cafe.setId(id);
cafe.setName(name);
session.save(cafe);
tx.commit();
System.out.println("inserted");
}
else{
System.out.println("already exist");
}
HibernateUtil.closeSession();
3. key가 아닌 값을 이용해 존재하는지 확인한 후 저장하는 방법
* createQuery 안의 문장은 SQL Query가 아니라 Hibernate에서 사용하는 HQL(Hibernate Query Language) 이다.
* 자세한 문법은 http://www.hibernate.org/hib_docs/v3/reference/ko/html/queryhql.html
Session session = HibernateUtil.getCurrentSession();
Keyword k = (Keyword) session.createQuery(
"select k from Keyword as k where keyword = ?").setString(0,
keyword).uniqueResult();
if (k == null) {
Transaction tx = session.beginTransaction();
Keyword kw = new Keyword();
kw.setKeyword(keyword);
session.save(kw);
tx.commit();
System.out.println("inserted");
} else {
System.out.println("already exist");
}
HibernateUtil.closeSession();
4. 자동 증가값 받기
* 걍 강제 casting
int id = (Integer) session.save(kw);
5. DB의 identity 컬럼 관련 XML 설정
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="net.daum.cafe.search.weblog.entity">
<class name="Keyword" table="tKeyword">
<id name="id" column="id">
<generator class="identity" />
</id>
<property name="keyword" type="string" column="keyword" />
</class>
</hibernate-mapping>
6. 복합키 관련 XML 설정
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="net.daum.cafe.search.weblog.entity">
<class name="DTBC" table="tableD">
<composite-id>
<key-property name="Id" type="int" column="Id" />
<key-property name="keywordId" type="int" column="keywordId" />
</composite-id>
<property name="count" type="int" column="count" />
</class>
</hibernate-mapping>
* 참고 : 복합키를 구현하려면 Serializable을 반드시 implements해 주어야 한다. 그렇지 않으면 'composite-id class must implement Serializable' 예외가 발생한다.
'programming > Java' 카테고리의 다른 글
java Date 관련 Quick reference (0) | 2006.07.27 |
---|---|
concurrent 패키지를 이용 간단한 ThreadPool 돌리기 (3) | 2006.07.24 |
Java Puzzlers : 9. Tweedledum (0) | 2006.07.19 |