正 文

Java项目中使用Hibernate处理数据


www.7dspace.com  更新日期:2006-2-14 17:20:15  七度空间


  Order

  我们需要创建的下一个类是Order,它甚至比Product更简单:它只包含ID、创建日期、总价格和该Order所包括的OrderItems的Set。当然,还需要创建getter和setter方法以及默认的构造函数。

package test.hibernate;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

public class Order {
    private String id;
    private Date date;
    private double priceTotal;
    private Set orderItems = new HashSet(); 
     
    // 自动设置该Order的创建时间
    public Order() {
        this.date = new Date();
    } 

    public String getId() {
        return id;
    }
    public void setId(String string) {
        id = string;
    }
    // 为了简洁起见,其他getter/setter方法没有显示
    // ...
}

  同样也要重写toString()方法。不要忘记对orderItems执行循环!

  OrderItem

  这个类稍微复杂一些,但仍然很易懂。我们的业务需求决定我们需要一定量的产品,我们将会把它们放到一个订单中。那些产品将自动变成订单项。这时就需要自定义构造函数了。

package test.hibernate;

public class OrderItem { 

    /**
    * 创建有效的订单项。自动设置订单项的价格,并更正产品的库存可用量
    * 
    * @param order 该订单项属于的订单
    * @param product 该订单项为哪种产品而创建
    * @param amount 
    */
    public OrderItem(Order order, 
                     Product product, 
                     int amount) { 

        this.order = order;
        this.product = product;
        this.amount = amount;
        product.setAmount(product.getAmount() - amount);
        this.price = product.getPrice() * amount;        
    } 

    // 还需要默认的构造函数来保证Hibernate工作
    /**
    * 空构造函数遵循JavaBeans约定 
    *
    */
    public OrderItem() {
        // 空的默认构造函数
    } 

    // 字段
    private String id;
    private Product product;
    private Order order;
    private String productId;
    private String orderId;
    private double price;
    private int amount; 
     
    public String getId() {
        return id;
    }
    public String getProductId() {
        return product.getId();
    }
    public String getOrderId() {
        return order.getId();
    }
    // 其他getter/setter方法没有显示
    // ... 

    //显示该订单项的方便方式
    public String toString() {
        return
          "[OrderItem] id=" + id + " amount=" +
          amount + " price=" + price + "(" +
          product + ")";
    }
}

  现在我们有了反映数据库结构的所有类。余下的唯一一件没有解释的事情就是如何把产品放到一个订单中。只需把下面的方法添加到Order类中:

/**
* 添加一项产品到订单中。产品自动成为一个订单项。 
* priceTotal被自动更新。

* @param p 添加到该订单的产品
* @param amount 添加的产品量
*/
public void addProduct(Product p,
                       int amount) {

   OrderItem orderItem = new OrderItem(this,
                         p, amount);

   this.priceTotal = this.priceTotal
                     + p.getPrice() * amount;

   this.orderItems.add(orderItem);
}

  启动Hibernate

  在我们假想的应用程序中,基本的使用模式非常简单:我们将创建一个Product,然后将其持久化(或者换句话说,保存它);我们将搜索并加载一个已经持久化的Product,并确保其可以使用;我们将会更新和删除Product。

6页,页码:[1] [2] [3] [4] [5] [6] 

上一篇:聊天更轻松 腾讯QQ消息自动发送
下一篇:情人节个性礼品光盘制作全攻略
标题:Java项目中使用Hibernate处理数据 作者:Davor Cengija 来源:bea
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐