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
//
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
{
for (int i=0; i

