javaee编程;与JPA混淆的2个表格

javaee编程;与JPA混淆的2个表格,java,hibernate,jakarta-ee,servlets,jpa,Java,Hibernate,Jakarta Ee,Servlets,Jpa,我正在使用JPA来持久化数据。我对整个JavaEE编程都是新手,所以如果我做错了,请告诉我。我有两个物体。活动和门票。用户将添加新事件并选择该事件的票证数量。然后我将在事件表中创建一个条目。还取决于该活动的门票数量,我将在tickets表中创建如此多的条目。我不知道在创建事件时创建票证的逻辑应该存在于servlet中还是会话bean中。我有单独的事件和票证会话bean。我不确定我应该有2个会话bean还是只有1个bean。这方面的任何建议都会非常有用 代码 @实体 公共类事件{ @身份证 @Ge

我正在使用JPA来持久化数据。我对整个JavaEE编程都是新手,所以如果我做错了,请告诉我。我有两个物体。活动和门票。用户将添加新事件并选择该事件的票证数量。然后我将在事件表中创建一个条目。还取决于该活动的门票数量,我将在tickets表中创建如此多的条目。我不知道在创建事件时创建票证的逻辑应该存在于servlet中还是会话bean中。我有单独的事件和票证会话bean。我不确定我应该有2个会话bean还是只有1个bean。这方面的任何建议都会非常有用

代码

@实体
公共类事件{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私人长事件ID;
私有字符串名称;
@OneToMany(mappedBy=“event”,cascade=CascadeType.ALL)
私人订票;
//这里是盖特和塞特
}    
@实体
公务舱票{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私人长票;
@许多酮
@JoinColumn(name=“event\u id”,nullable=false)
私人活动;
//接球手和接球手
}

您的主要逻辑应该在EJB中,而不是控制器/servlet中。您的EJB应该为您的主要用例提供方法。您应该只将表示逻辑放在servlet中,格式化用于显示和处理用户操作的数据

另见:

至于bean的数量,这是您的选择,您可以从一个bean开始,如果它变得太乱,可以重构它


另外,我不确定在创建活动时是否应该创建门票。一个事件可以有一个字段,该字段显示有多少张可用的票证,您可以在用户购买时创建一张票证,或者类似的内容。

感谢您的回复。我也会这样做。我还有一些其他的桌子。有一个名为transaction的表,它与票证相关。所以我把它做成了一个单独的表格好的,如果这是你要找的,请将问题标记为已回答。@user1317345是正确的。。在OO中,逻辑在你的域层中,而不是在你的服务或控制层中,你可能还想阅读关于反模式贫血域模型的内容()
@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
 }