【发布时间】:2014-08-21 14:03:04
【问题描述】:
给定一个典型的 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...
}
这样做我会让自己陷入一个受伤的世界吗?
【问题讨论】:
-
看看 Spring Roo,尤其是
@RooActiveRecord。