gpt4 book ai didi

java - 使 @Entity 持久化

转载 作者:行者123 更新时间:2023-11-30 09:06:22 24 4
gpt4 key购买 nike

给定一个典型的 JPA 示例 such as this one ,我们有这样的代码:

@Entity
public class Company {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
//...etc...
}

和:

public class CompanyDaoImpl implements CompanyDao {
@PersistenceContext(unitName = "custdb")
private EntityManager em;

public void createCompany(final Company c) {
em.persist(c);
}
//...etc...
}

(让我们忽略此示例中的 @Stateless 属性)

阅读有关 anaemic domain models 的其他网站以及关于 why shouldn't JPA Entities contain business logic 的问答,为什么我不能说:

@Entity
public class Company {
@PersistenceContext(unitName = "custdb")
private EntityManager em;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

public void create() {
em.persist(this);
}
//...etc...
}

我这样做会让自己陷入痛苦的世界吗?

最佳答案

一个可能的原因是,与其在每个类中重复 CRUD(创建、读取、更新、删除)操作,不如创建更通用的解决方案,从而允许您使用多个类的实例。

看看这个question .接受的答案给出了一个通用 DAO 的示例,该示例使用其操作的对象类型进行参数化。这是一种非常常用的模式。

关于java - 使 @Entity 持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24503015/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com