отношения продолжительности жизни Cartitem и Invoice .. сомнения в реализации ShoppingCart - PullRequest
0 голосов
/ 05 июля 2011

Я пытаюсь реализовать веб-приложение для корзины покупок, как и большинство новичков в javaee & hibernate .. Я просмотрел много учебников и до сих пор сомневаюсь.Я надеюсь, что кто-то здесь может помочь мне исправить мое мышление.

Я реализовал класс Product и CartItem.У CartItem есть поле Product и поле количества.Когда пользователь хочет купить Продукт, он добавляет CartItem в корзину.

Чтобы смоделировать покупку пользователя, я написал класс Invoice с набором объектов CartItem.У этого также есть область клиента.Теперь я немного запутался по поводу соответствующих таблиц и того, как должны соотноситься их времена жизни.

После создания записи счета-фактуры (когда пользователь покупает некоторые товары), следует ли хранить соответствующие картеми в db?Или, как только пользователь покупает предметы, следует ли удалить записи из картема?

Если кто-то может пролить свет на них, было бы неплохо.

Спасибо,

Отметить

Исходный код:

class CartItem {
    private Long cartItem_id;
    private Product product;
    private int quantity;
...
}

class Invoice {
    private Long invoice_id;
    private Customer customer;
    private Set<CartItem> cartItems;
    private Date invoiceDate;
    private int invoiceNumber;
    private double totalAmount;
...
}

Я создал таблицы CARTITEM и INVOICE, как показано ниже.

CREATE TABLE CARTITEM(
    CARTITEM_ID BIGINT NOT NULL PRIMARY KEY IDENTITY,
    QUANTITY INTEGER,
    PRODUCT_ID BIGINT,
    FOREIGN KEY(PRODUCT_ID) REFERENCES PRODUCT(PRODUCT_ID)
)

CREATE TABLE INVOICE(
    INVOICE_ID BIGINT NOT NULL PRIMARY KEY IDENTITY,
    INVOICE_NUMBER INTEGER,
    INVOICE_DATE DATE,
    TOTAL_AMOUNT DOUBLE,    
    CUSTOMER_ID BIGINT,
    UNIQUE(INVOICE_NUMBER),
    FOREIGN KEY(CUSTOMER_ID) REFERENCES CUSTOMER(CUSTOMER_ID)
)

Ответы [ 2 ]

1 голос
/ 05 июля 2011

Что ж, если вы сохраняете счет-фактуру, имеет смысл сохранить только элементы CartItems, которые составили счет-фактуру. В противном случае, как пользователь сможет вернуться позже и перепечатать счет, например?

Добавьте внешний ключ в таблицу CARTITEM, чтобы связать его со счетом, и все готово.

1 голос
/ 05 июля 2011

После создания записи счета-фактуры (когда пользователь покупает некоторые товары), следует ли хранить соответствующие картриджи в db?

Все зависит от ваших бизнес-правил. Вы хотите восстановить эту информацию в будущем? Вероятно , я думаю. Тогда они должны быть настойчивыми.

Если вы не хотите сохранять их, нет необходимости создавать таблицу базы данных (если вы не хотите восстановления после сбоя). Вы можете держать CarItem в сеансе (при условии, что это веб-приложение).

...