java-模型bean上的分层体系结构和持久性注释?
作者:互联网
我想在一个新的Java EE Web应用程序中遵循separation of concerns设计原则.如果我理解正确,这意味着我必须在模型/业务层中看不见我的DAL(数据访问层)的技术选择.
当我使用Spring Data Neo4j时,我必须用例如注释我的模型bean. “ @NodeEntity”,专用于Spring Data Neo4J的注释.这似乎将模型层与数据访问层混合在一起.
>我在这里做的分析很好吗?
>如果是这样,如何使用Spring Data Neo4j注释建立一个独立于DAL的模型?
谢谢你的帮助!
解决方法:
常见的解决方案是通过接口原理应用编程,为每个实体和关系创建接口,并使用SDN注释类实现它们.
这样,模型层将仅通过接口访问实体,而无需了解实现.
为了吸引数据库访问操作,您可以创建DAO接口,并使用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");
标签:n-tier-architecture,spring-data-neo4j,spring,java 来源: https://codeday.me/bug/20191030/1965908.html