gpt4 book ai didi

java - 模型 bean 的分层架构和持久性注释?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:16:10 26 4
gpt4 key购买 nike

我想关注separation of concerns新 Java EE Web 应用程序中的设计原则。如果我理解正确,这意味着我必须保留我的 DAL 的技术选择。 (数据访问层)在我的模型/业务层中不可见。

当我使用 Spring Data Neo4j 时,我必须用例如“@NodeEntity”,一个特定于 Spring Data Neo4J 的注解。这似乎将模型层与数据访问层混合在一起。

  • 我在这里做的分析很好吗?
  • 如果是这样,我如何使用 Spring Data Neo4j 注释获得一个独立于我的 DAL 的模型?

感谢您的帮助!

最佳答案

一个常见的解决方案是应用接口(interface)编程原则,为每个实体和关系创建接口(interface),并使用 SDN 注释类实现它们。这样,模型层将仅通过接口(interface)访问实体,而不知道实现。要提取数据库访问操作,您可以创建 DAO 接口(interface)并使用 SDN 存储库和/或 Cypher 查询来实现它们。一个例子:

public interface Item {
String getName();
...
}

public interface ItemDAO {
Item lookup(String name);
...
}

@NodeEntity
public class ItemNode implements Item {
@GraphId private Long id;
private String name;
...
public String getName() { return name; }
...
}

public class Neo4jItemDAO implements ItemDAO {
...
@Override
public Item lookup(String name) {
return neo4jOperations.lookup(ItemNode.class,"name", name).to(ItemNode.class).singleOrNull();
}
}

在您的模型类中,您可以通过这种方式访问​​实体:

@Autowired ItemDAO itemDAO;
Item item = itemDAO.lookup("name");

关于java - 模型 bean 的分层架构和持久性注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20074837/

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