jpa 实体类上的业务逻辑

jv4diomz  于 7个月前  发布在  其他
关注(0)|答案(1)|浏览(70)

我正在查看状态模式。(https://springframework.guru/gang-of-four-design-patterns/state-pattern/
但是我没有找到如何在我的Spring项目中实现。
我需要在实体类上声明状态示例的变量,因为我对状态模式的理解是正确的。因为我的实体类有状态,并且每个状态需要不同的行为。
但是我认为,实体类需要纯粹的因为它代表数据库对象。
JPA的实体类的状态模式的最佳实践是什么?
谢谢.

gzjq41n4

gzjq41n41#

你说的很对,实体类不应该实现任何业务逻辑。而且,如果你的实体是由任何 ORM框架 * 自动生成的,只要你的自定义代码会重新生成,你就会遇到严重的麻烦。
尝试使用复合沿着 * 状态模式。
伪代码:

// Entity class
public class Person
{
    public long Id {get; set;}    
    public string FirstName {get; set;}
    public string LastName {get; set;} 
    public long Status {get; set;}
}
    
public class PersonState : IPersonState
{
    private Person person;
    public PersonState(Person person, ...)
    {
        this.person = person;
        ...
    }
    
    // Your state methods 
    public void SetActiveState()
    {
         // do something with person status
         person.Status = ...
    }
    
    public void SetInactiveState()
    {
         // do something with person
         person.Status = ...
    }
}

字符串
所以,你要保持实体纯洁,有一个好的设计...

相关问题