Я пытаюсь написать свою первую программу DAO. В моей базе данных я создал две таблицы: PROJECT и MILESTONE. Обычно у меня есть агрегирующая взаимосвязь между проектом и этапом: проект может иметь много этапов, но веха неизбежно затрагивает только ОДИН проект.Соотношение агрегирования в JAVA (DAO) и SQL
У меня есть два основных вопроса:
1) В таблицах SQL, это значит, что я должен был добавить Ограничить (иностранный ключ) на ProjectID и связаны, что внешний ключ к таблице вех? До сих пор я выбрал столбец с именем «projectid» в таблице веха. На мой взгляд, это просто, если мы это сделаем.
2) Когда я создаю объект веха, это ОБЯЗАТЕЛЬНО к specifiy в ProjectID, поэтому я попытался написать этот конструктор:
public Milestone (String name, String description, String projectId) throws SQLException, ClassNotFoundException {
this.name = name;
this.description = description;
ProjectDAOImpl proj = new ProjectDAOImpl();
// "proj.findById(projectId)" is to verify if a real project exist having the specified id
if ((proj.findById(projectId))!= null) {
this.projectId = projectId;
}
else {
return null; //is it correct to do that in a constructor??
}
}
Probleme здесь я не знаю, как я могу перевести это условие в Java: «Если есть существующий проект с указанным ID, тогда эта веха будет затронута в этом проекте. Если нет, объект вехи не будет создан». Я имею в виду, как я могу сказать конструктору не создавать объект, если нет соответствующего проекта?