全面引用Hibernate示例
在向大家詳細(xì)介紹Hibernate之前,首先讓大家了解下Hibernate示例,以后全面介紹Hibernate。
Hibernate示例
創(chuàng)建一個(gè)訂單。在該Hibernate示例中,我們創(chuàng)建并持久化一個(gè)訂單。反復(fù)運(yùn)行這個(gè)示例,查看產(chǎn)品數(shù)量在每次成功創(chuàng)建訂單后如何變化。
- / ...
- Configuration cfg = new Configuration().addClass(Product.class).
addClass(Order.class).addClass(OrderItem.class);- // ...
- Order order = new Order();
- order.addProduct(milk, 3);
- order.addProduct(coffee, 5);
- // ...
- sess = sf.openSession();
- Transaction t = sess.beginTransaction();
- sess.save(order);
- t.commit();
- sess.close();
- System.out.println(order);
- // ...
按照價(jià)格范圍查找訂單。在該示例中,我們將展示如何使用一個(gè)帶有兩個(gè)參數(shù)的查詢。Hibernate正確地加載具有適當(dāng)訂單項(xiàng)和產(chǎn)品的訂單。
- // ...
- String query = "select o from o "+ "in class test.hibernate.Order "+
"where o.priceTotal > :priceTotalLower "+ "and o.priceTotal
< :priceTotalUpper";- // ...
- Query q = sess.createQuery(query);
- q.setDouble("priceTotalLower",Double.parseDouble(args[0]));
- q.setDouble("priceTotalUpper",Double.parseDouble(args[1]));
- List list = q.list();
- // ...
- sess.close();
- // ...
刪除一定價(jià)格范圍內(nèi)的訂單。這是一個(gè)重要的Hibernate示例。這里我們會看到Hibernate是一個(gè)多么智能的工具。正如前面所提到的,當(dāng)刪除一個(gè)訂單時(shí),其訂單項(xiàng)也需要被刪除,但不能改變產(chǎn)品。在運(yùn)行該示例后,檢查數(shù)據(jù)庫,確認(rèn)產(chǎn)品沒有變化。
- // ...
- String query = "select o from o "+ "in class test.hibernate.Order "+
"where o.priceTotal > :priceTotalLower "+ "and o.priceTotal
< :priceTotalUpper";- Transaction tx = sess.beginTransaction();
- sess.delete(query,new Object[]{new Double(args[0]),new Double(args[1])},
new Type[]{Hibernate.DOUBLE,Hibernate.DOUBLE});- tx.commit();
- sess.close();
【編輯推薦】