Сильная связь между DAOClasses, получение ссылок приводит к StackOverflow - PullRequest
1 голос
/ 05 февраля 2020

Я имел дело с DAOClasses и столкнулся с серьезной проблемой, которая вынуждает меня реорганизовать весь мой проект. Однако я понятия не имею, как решить эту проблему.

Предположим, у меня есть 3 сущности:

public class User {

    private int id;
    private int cfu;
    private String name;
    private String surname;

}

public class Project {

    private int ID;
    private String info;
    private Doc doc;

}

public class Doc {

    private int id;
    private String name;
    private String surname;
    private ArrayList<Project> projects;

}

Каждый из этих классов имеет свой собственный DAO и свою собственную таблицу (относительно Doc таблица не хранит ссылки на Projects идентификаторы);

Среди своих различных методов DAOClasses использует эти 2 метода:

  • read позволяет создать элемент типа T учитывая идентификатор
  • readAll позволяет восстановить все элементы типа T с учетом фильтра

Когда я вызываю read метод для DocDAO, необходимо проверить, является ли * Таблица 1022 * содержит элементы Do c, в этом случае создайте эти элементы благодаря ProjectDAO readAll и добавьте их в свой ArrayList. Но также ProjectDAO необходимо прочитать элемент Doc, который снова нуждается в ProjectDAO, вызывая циклическую зависимость (следовательно, StackOverflow):

DocDAO.read(int id) --calls--> ProjectDAO.readAll(Doc d) --calls-> DocDAO.read(int id) --calls--> ProjectDAO.readAll(Doc d)...

readAll позволяет восстановить все элементы типа T с учетом фильтра create позволяет создать элемент типа T в базе данных

, как я могу отделить эти функции без изменения базовых классов (но только DAO)? Я бы пропустил, давая больше кода, так как он очень длинный.

...