Java DDD:实体及其标识符

Java DDD:实体及其标识符,java,hibernate,domain-driven-design,Java,Hibernate,Domain Driven Design,我的系统中有一个实体,它自然需要一个标识符,以便能够唯一地标识它。假设数据库用于使用Hibernate生成标识符,使用本机策略,那么应用程序代码显然没有分配标识符的责任 现在,该实体的实例在被持久化并获取其标识符之前是否可以被认为是有效的? 或者我应该使用其他一些策略来分配实体的标识符,以便在调用其构造函数时获取其标识符?这是一个广泛的主题,但有两种可能性: 定义您的hashCode()和等于(…)基于的合同。例如,对于用户实体,这将是用户名,而不是自动生成的id。因此,您可以在保留实体之前在

我的系统中有一个实体,它自然需要一个标识符,以便能够唯一地标识它。假设数据库用于使用Hibernate生成标识符,使用本机策略,那么应用程序代码显然没有分配标识符的责任

现在,该实体的实例在被持久化并获取其标识符之前是否可以被认为是有效的?

或者我应该使用其他一些策略来分配实体的标识符,以便在调用其构造函数时获取其标识符?

这是一个广泛的主题,但有两种可能性:

  • 定义您的
    hashCode()
    等于(…)
    基于的合同。例如,对于
    用户
    实体,这将是用户名,而不是自动生成的id。因此,您可以在保留实体之前在集合中使用该实体

  • 使用
    UUID
    作为主键,自己处理生成。Jeff Atwood演示了如何在Hibernate中使用它


(既然您提到了DDD和hibernate,请看一下我的)

谢谢,我想我会选择第二个选项,它将自己生成ID。