2009年07月04日

ORM 053 - Hibernate Criteriaによる検索 - 一条件の場合

======================================================================
Java ORM(Object Relational Mapper) 徹底解説
======================================================================
ORM 053 - Hibernate Criteriaによる検索 - 一条件の場合.
======================================================================

HibernateではCriteriaというものを使って、検索条件を指定して検索するこ
とができる.

以前にサンプルで使った書籍の検索をCriteriaで行う.

設定ファイルとBookEntity.javaは、今までと変わりはないので省略.必要なら
ば OrmComparison.zip の hibernate/2051を参照されたい.

テストプログラムを示す.

==== Test2051.java

import java.io.File;
import java.util.Date;
import java.util.List;

import org.hibernate.cfg.Configuration;
import org.hibernate.Criteria;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

public class Test2051
{
private static final String isbn01 = "4797339535";
private static final String isbn02 = "4797331828";
private static final String isbn11 = "4797336617";
private static final String isbn12 = "4274063852";
//
private static Session session;

public static void main(String[] args)
{
String configFileName = ".\\hibernate.cfg.xml";
SessionFactory sessionFactory;
sessionFactory = (new Configuration()).configure(new File(configFileName)).buildSessionFactory();
session = sessionFactory.openSession();
//
Criteria criteria;
BookEntity entity;
String strQuery;
Query query;
List bookList;
//
try {
Transaction tx = session.beginTransaction();
//
BookEntity bookEntity = new BookEntity();
bookEntity.setIsbn(isbn01);
bookEntity.setName("明解Java 入門編");
session.save(bookEntity);
//
bookEntity = new BookEntity();
bookEntity.setIsbn(isbn02);
bookEntity.setName("やさしいJava 第3版");
session.save(bookEntity);
//
bookEntity = new BookEntity();
bookEntity.setIsbn(isbn11);
bookEntity.setName("たのしいRuby 第2版 Rubyではじめる気軽なプログラミング");
session.save(bookEntity);
//
bookEntity = new BookEntity();
bookEntity.setIsbn(isbn12);
bookEntity.setName("Rubyプログラミング入門");
session.save(bookEntity);
//
tx.commit();
//
System.out.println("全レコードを取得する.");
criteria = session.createCriteria(BookEntity.class);
bookList = criteria.list();
printInfo(bookList);
//
System.out.println("Java関連書籍のみを取得.");
criteria = session.createCriteria(BookEntity.class);
criteria.add(Restrictions.like("name","Java",MatchMode.ANYWHERE));
// 必要ならば、さらに条件を追加する.
bookList = criteria.list();
printInfo(bookList);
//
// 書籍削除処理
tx = session.beginTransaction();
bookEntity = getBookEntity(isbn01);
session.delete(bookEntity);
bookEntity = getBookEntity(isbn02);
session.delete(bookEntity);
bookEntity = getBookEntity(isbn11);
session.delete(bookEntity);
bookEntity = getBookEntity(isbn12);
session.delete(bookEntity);
tx.commit();
}
catch(Exception ex) {
ex.printStackTrace();
}
finally {
session.close();
}
}

/** 取得した書籍情報を表示する. */
private static void printInfo(List bookList)
{
for (int i=0; i
posted by ジャップ at 21:28| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: