在一个对象中,我应该将id放到另一个对象,还是整个对象?

时间:2014-07-20 03:22:32

标签: java android sql oop

我有两个对象:产品和表格。

产品:

private int id;
private int metricId;
private int projectId;
private String brand;
private String name;

表格:

private int id;
private int captureId;
private Product product;
private String qty;
private String picture;
private String validation;

所以在Form中,我有一个产品对象。

当我必须处理SQL时,我总是需要操作product_id。

所以我的问题是:在表单定义中,我应该拥有整个产品“产品”字段还是只有id:productId?

当我进行查询时,我遇到了一个困难:

// Getting single Form
public Form getForm(int id) {
    SQLiteDatabase db = DatabaseManager.getInstance().openDatabase();
    Form form = null;
    String query = "SELECT * FROM " + TABLE_FORM + " WHERE " + FORM_ID
            + " = " + id;
    Cursor cursor = db.rawQuery(query, null);

    if (cursor != null && cursor.moveToFirst()) {
        form = new Form();
        form.setId(cursor.getInt(0));
        form.setCaptureId(cursor.getInt(1));
        form.setProductId(cursor.getInt(2)); // <-- I have no ProductId, just an Object
        form.setQty(cursor.getString(6));
        form.setPic(cursor.getString(7));
        form.setSync(cursor.getInt(8));
    }

在这种类型的查询中,我觉得我的对象应该只有id,因为否则,我应该连接每个Form Query来获取产品。

我觉得第一个是“Java”,第二个是“Sql”。所以我不能自己决定! 欢迎任何意见!

2 个答案:

答案 0 :(得分:0)

是的,只使用ID。如果我没有错,这是一种规范化的形式。如上所述,联接应该在检索时帮助您。

答案 1 :(得分:0)

保持表单与产品关系的优势在于您能够封装产品和表单的不同想法。虽然在您的场景中只有id可以接受,但随着应用程序的增长,您需要代表表单和产品之间的关系。例如,当您需要保留表单及其产品信息时会发生什么?然后,您将需要该产品仍然是表单的一部分。

一般来说,最好在java代码中开发一个清晰的域模型,因为它比仅将ID附加到不同的对象更灵活。