简体   繁体   English

Java-ee编程; 与JPA混淆2张桌子

[英]Java-ee programming; Confusion with JPA for 2 tables

I am using JPA to persist data. 我正在使用JPA保留数据。 I am new to whole of Java-ee programming so please let me if I am doing it wrong way. 我是整个Java-ee编程的新手,所以如果我做错方法,请让我。 I have 2 objects. 我有2个物件。 Events and tickets. 活动和门票。 User will add new event and will select number of tickets for that event. 用户将添加新事件,并将选择该事件的门票数量。 Then I will be creating an entry in Event table. 然后,我将在事件表中创建一个条目。 Also depending on number of tickets for that event, I will be creating so many entries in the tickets table. 另外,根据该事件的票证数量,我将在票证表中创建很多条目。 I am confused whether this logic of creating tickets when event gets created should be there in servlets or in the session bean. 我很困惑这种在创建事件时创建票证的逻辑是否应该在servlet或会话bean中存在。 I have separate session bean for event and ticket. 我有用于事件和票证的单独的会话bean。 I am not sure if I should have 2 session beans or just 1 bean. 我不确定我应该有2个会话bean还是只有1个bean。 Any pointers on this will be really helpful. 任何有关此的指示将非常有帮助。

Code

@Entity
public class Event {    
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long eventId;
private String name;
@OneToMany(mappedBy = "event", cascade = CascadeType.ALL)
private Set<Ticket> tickets;

    //getter and setters here
}    

@Entity
public class Ticket {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long ticketId;
@ManyToOne
@JoinColumn(name = "event_id", nullable=false)
private Event event;

//getters and setters
 }

Your main logic should be in your EJBs, not in your controllers/servlets. 您的主要逻辑应该在EJB中,而不是在控制器/ servlet中。 Your EJBs should provide methods for your main use cases. 您的EJB应该提供主要用例的方法。 You should only put presentation logic in servlets, formatting data for display and handling user actions. 您只应将表示逻辑放在servlet中,格式化数据以显示和处理用户动作。

See also: Session Facade pattern 另请参阅: 会话外观模式

As for the number of beans, that is your choice, you can start with one and refactor if it gets too messy. 至于bean的数量,这是您的选择,您可以从一个开始,如果过于混乱则进行重构。

Also, I'm not sure you should be creating tickets when you create an event. 另外,我不确定您在创建活动时应该创建票证。 An event can have a field that says how many tickets are available, and you create a ticket when a user buys it, or something like that. 事件可以具有一个字段,该字段说明有多少张票证,您可以在用户购买票证时创建票证或类似的东西。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM