Java 数据库模型的依赖注入

Java 数据库模型的依赖注入,java,mongodb,design-patterns,dependency-injection,orm,Java,Mongodb,Design Patterns,Dependency Injection,Orm,我正在使用ORM/ODM()来管理我的模型,但我遇到了一个问题: 模型的构造函数仅在创建对象时调用(newmyobject(dep1,dep2)),而在从db加载时不调用(db.get(id)) 如何将不可序列化的依赖项注入到ORM管理的对象中? 我已经将依赖关系直接注入到任何需要依赖关系的方法中 public void doSomething(UserDAO userDAO) { ... } 但这很快就会导致难看的代码。有更好的方法吗?如果您想在加载实体后为其设置不可序列化的依赖项,则可以使

我正在使用ORM/ODM()来管理我的模型,但我遇到了一个问题:

模型的构造函数仅在创建对象时调用(
newmyobject(dep1,dep2)
),而在从db加载时不调用(
db.get(id)

如何将不可序列化的依赖项注入到ORM管理的对象中?

我已经将依赖关系直接注入到任何需要依赖关系的方法中

public void doSomething(UserDAO userDAO) { ... }

但这很快就会导致难看的代码。有更好的方法吗?

如果您想在加载实体后为其设置不可序列化的依赖项,则可以使用生命周期注释
@PostLoad

举例来说

@PostLoad
void postLoad() {
   userDAO = // e.g. new UserDAO() or UserDAO.getInstance();
}

虽然这是可能的,但我并不认为这是一个好方法。您应该考虑将实体(域对象)和服务功能(应用层)分开(参见)。p>
但别误会,这并不意味着您的域对象不应该包含任何逻辑。

通常您不会将DAO交给域对象。操作DAO的代码宁愿驻留在应用程序的适当体系结构层中的某个服务中。在这种情况下,您可以将DAO注入到服务中,并将其与服务代码中的域对象/模型一起使用。如果你必须保持架构的原样,让我们看看是否有人知道影响morphia中对象创建的巧妙技巧。该网站以问答和接受流为生。由于您是新来的,请不要忘记接受答案,有关更多详细信息,请参阅。