实现Reservation数据库EJB 3.0的好方法是什么

时间:2011-10-03 19:53:09

标签: java database arrays database-design ejb

在我正在开发的系统中,我们允许客户预订很多东西。目前,我有这两个实体:

@Entity
public class Reservation implements Serializable {
    ...
    private long startTime;
    private long endTime;
    private int  status;
    @ManyToOne
    private Customer theCustomer;   // record who made this reservation
    @ManyToOne
    private ReservableUnit theUnit; // record what this reservation is for
    ...
}

@Entity
public class ReservableUnit implements Serializable {

    private int numOfAvailableUnits;
    ...
    private int[][][] firstMonth = new int[31][24][2];
    ...
    private int[][][] fourthMonth = new int[31][24][2];
}

//status
public static final int AVAILABLE = 0;
public static final int BLOCKED   = 1;
public static final int RESERVED  = 2;

在ReservableUnit表中,我有4个int [31] [24] [2]数组,用于存储最多3个月前所有30分钟时间段的状态。我使用数组是因为我认为当我将它们带入内存时,检查所请求的时隙是否可用会很快。

我的一位朋友告诉我,这不是一个好方法,因为我必须在数据库中存储大对象。他建议我删除这些字段,当我需要检查插槽是否可用时,我应该通过计算Reservation表中的行来计算为这些插槽进行的预留数量。显然,我朋友的方式可以为数据库节省一些空间。但是,从长远来看,我们将在Reservation表中有很多行,这意味着处理插槽状态需要更长时间。

我是一名在设计数据库方面没有扎实工作经验的学生。因此,如果有人能就此事给我一个建议,我将非常感激。

致以最诚挚的问候,

James Tran

0 个答案:

没有答案