// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。



Hibernatにはいろいろな検索機能がありますが「Exampleによるクエリ」というのがあります。これは与えられたモデル(エンティティ)のプロパティにマッチするレコードを返す機能です。具体的には
 Item example = new Item();
 example.setItemCode("C003");  <- アイテムコードのカラムが「C003」のモノ
 List list = dao.findByExample(example); <-合致するモノをDBから検索してListで返却
こんな感じです。

**やってみる [#u9da7deb]
実際にやってみます。

***テーブルと対応するJavaBeans [#ma3a1802]

#ref(item.png)

-DDL
 CREATE TABLE `ITEM` (
  `ITEM_ID` int(10) unsigned NOT NULL auto_increment,
  `ITEM_CODE` varchar(10) NOT NULL default '',
  `NAME` varchar(256) NOT NULL default '',
  `INITIAL_PRICE` double NOT NULL default '0',
  `VERSION` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`ITEM_ID`)
 );

-JavaBeans
 package nu.mine.kino.entity.webdb1;
 
 import org.apache.commons.lang.builder.ToStringBuilder;
 
 public class Item implements java.io.Serializable {
   private int itemId;
   private int version;
   private String itemCode;
   private String name;
   private double initialPrice;
  
   public Item() {
   }
  
   public Item(int itemId, String itemCode, String name, double initialPrice) {
     this.itemId = itemId;
     this.itemCode = itemCode;
     this.name = name;
     this.initialPrice = initialPrice;
   }
  
   public Item(String itemCode, String name, double initialPrice) {
     this.itemCode = itemCode;
     this.name = name;
     this.initialPrice = initialPrice;
   }
  
   public String toString() {
     return new ToStringBuilder(this).append("id", getItemId()).append(
         "code", getItemCode()).append("Name", getName()).append(
         "price", getInitialPrice()).toString();
   }
  
   getter/setterは省略
 }

***DAO [#fe878fed]
-DAO (interface)
 package nu.mine.kino.entity.webdb1;
 
 import java.util.List;
 
 public interface IItemDAO {
     Item save(Item item);
     void delete(Item item);
     Item update(Item item);
     Item findById(int id);
     List findByExample(Item instance);
 }


-DAOの実装(Powered by Spring)
 package nu.mine.kino.entity.webdb1;
 
 import org.apache.log4j.Logger;
 
 import java.util.List;
 
 import org.hibernate.criterion.DetachedCriteria;
 import org.hibernate.criterion.Example;
 import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
 
 /**
  * @author Masatomi KINO
  * @version $Revision$
  * @spring.bean id = "itemDao"
  * @spring.property name = "sessionFactory" ref = "sessionFactory"
  */
 public class ItemDAO extends HibernateDaoSupport implements IItemDAO {
   private static final Logger logger = Logger.getLogger(ItemDAO.class);
 
   public List findByExample(Item instance) {
     DetachedCriteria dc = DetachedCriteria.forClass(Item.class);
     dc.add(Example.create(instance).excludeZeroes());
     List results = getHibernateTemplate().findByCriteria(dc);
     return results;
   }
   .. その他の実装は省略
 }







----
この記事は
#vote(おもしろかった,そうでもない)

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS