【问题标题】:Java-ee programming; Confusion with JPA for 2 tablesJava-ee 编程;与 JPA 混淆 2 个表
【发布时间】:2012-05-17 22:30:42
【问题描述】:

我正在使用 JPA 来保存数据。我是整个 Java-ee 编程的新手,所以如果我做错了,请告诉我。我有 2 个对象。活动和门票。用户将添加新活动并选择该活动的门票数量。然后我将在事件表中创建一个条目。此外,根据该活动的门票数量,我将在门票表中创建如此多的条目。我很困惑在创建事件时创建票证的这种逻辑是否应该存在于 servlet 或会话 bean 中。我有单独的会话 bean 用于事件和票证。我不确定我应该有 2 个会话 bean 还是只有 1 个 bean。对此的任何指示都会非常有帮助。

代码

@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
 }

【问题讨论】:

    标签: java hibernate jakarta-ee servlets jpa


    【解决方案1】:

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

    另请参阅:Session Facade pattern

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

    另外,我不确定您是否应该在创建活动时创建门票。一个活动可以有一个字段说明有多少门票可用,您可以在用户购买门票时创建门票,或类似的东西。

    【讨论】:

    • 感谢您的回复。我也会这样做。我也有其他几张桌子。有一个与票相关的称为事务的表。所以我把它做成了一个单独的表
    • 好的,如果这是您要查找的问题,请将问题标记为已回答。
    • @user1317345 是对的。在 OO 逻辑中进入您的域层,而不是在您的服务或控制层中您可能还想了解反模式贫血域模型 (martinfowler.com/bliki/AnemicDomainModel.html)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 2021-12-13
    • 2011-11-18
    相关资源
    最近更新 更多