全面引用Hibernate示例
作者:佚名
這里介紹在該Hibernate示例中,我們創建并持久化一個訂單。反復運行這個示例,查看產品數量在每次成功創建訂單后如何變化。
在向大家詳細介紹Hibernate之前,首先讓大家了解下Hibernate示例,以后全面介紹Hibernate。
Hibernate示例
創建一個訂單。在該Hibernate示例中,我們創建并持久化一個訂單。反復運行這個示例,查看產品數量在每次成功創建訂單后如何變化。
- / ...
- 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);
- // ...
按照價格范圍查找訂單。在該示例中,我們將展示如何使用一個帶有兩個參數的查詢。Hibernate正確地加載具有適當訂單項和產品的訂單。
- // ...
- 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();
- // ...
刪除一定價格范圍內的訂單。這是一個重要的Hibernate示例。這里我們會看到Hibernate是一個多么智能的工具。正如前面所提到的,當刪除一個訂單時,其訂單項也需要被刪除,但不能改變產品。在運行該示例后,檢查數據庫,確認產品沒有變化。
- // ...
- 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();
【編輯推薦】
責任編輯:佚名
來源:
51CTO.com