有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

模型bean上的java分层体系结构和持久性注释?

我想在一个新的JavaEEWeb应用程序中遵循separation of concerns设计原则。如果我理解正确,这意味着我必须使我的DAL(数据访问层)的技术选择从我的模型/业务层不可见

当我使用Spring数据Neo4j时,我必须用例如“@NodeEntity”来注释我的模型bean,这是一个特定于Spring数据Neo4j的注释。这似乎混合了模型层和数据访问层

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

谢谢你的帮助


共 (1) 个答案

  1. # 1 楼答案

    一个常见的解决方案是应用接口编程原理,为每个实体和关系创建接口,并用SDN注释的类实现它们。 这样,模型层将只通过接口访问实体,而不了解实现。 要执行数据库访问操作,可以创建DAO接口,并使用SDN存储库和/或密码查询实现它们。 例如:

    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");