Jan*_*Jan 12 java orm hibernate jpa java-ee
想象一下,Event实体引用状态实体:
@Entity
@Table(name = "event")
public class Event()
{
@Id
@Column(name = "id", nullable = false)
private long id;
...
@ManyToOne
@JoinColumn(name = "status_code", nullable = false)
private Status status;
}
@Entity
@Table(name = "status")
public class Status()
{
@Id
@Column(name = "code", nullable = false)
private String code;
@Column(name = "label", nullable = false, updatable = false)
private String label;
}
Run Code Online (Sandbox Code Playgroud)
状态映射到一个小表' status
'. 状态是典型的参考数据/查找实体.
code label
----- --------------
CRD Created
ITD Initiated
PSD Paused
CCD Cancelled
ABD Aborted
Run Code Online (Sandbox Code Playgroud)
我不确定将状态建模为实体是否是一个好主意.感觉更像是常量的枚举......
通过将Status映射为实体,我可以在Java代码中使用Status对象,并且Status值同样存在于数据库中.这对报告很有用.
另一方面,如果我想将特定状态设置为事件,我不能简单地分配我想到的常量状态.我必须首先查找正确的实体:
event.setStatus(entityManager.find(Status.class, "CRD"))
Run Code Online (Sandbox Code Playgroud)
我可以避免上面的代码片段吗?我担心性能下降,看起来很重......
欢迎所有意见/建议/建议!
谢谢!J.
我可以避免上面的代码片段吗?我担心性能损失而且看起来很重?
好吧,你可以用一个enum
代替。我真的不明白你为什么不这样做。
但如果您确实想使用一个实体,那么它将是二级缓存的完美候选者,这将解决您的性能问题。
归档时间: |
|
查看次数: |
6100 次 |
最近记录: |