Нужно ли добавлять ArrayList категории в качестве атрибута документа класса?И ArrayList документа как атрибута в категории?
Это зависит от того, как вы хотите получить доступ к вашим объектам.Если для ваших вариантов использования достаточно доступа к категориям с помощью документов
document1.getCategories().get(0)...
, и вам не требуется доступ к документам с помощью таких категорий, как эта
category1.getDocuments().get(0)...
, тогда этого будет достаточноиметь единый список.В этом случае вы бы назвали отношения между этими классами однонаправленными.Если требуются оба способа, вам нужно два списка.В этом случае ваш корабль связи является двунаправленным.В любом случае, если однонаправленных отношений достаточно, вы должны предпочесть их, так как вам не нужно синхронизировать оба списка в этом случае.
Мне также нужно внести изменения в некоторыеДокументы, мне нужно создать идентификатор атрибута в Class Document, чтобы сохранить идентификатор из таблицы в БД, чтобы обновление было проще?
Это какой-то вопрос дизайна.В большинстве случаев имеет смысл включать суррогатные ключи базы данных, поскольку это облегчит выполнение обновлений.В любом случае, если ваш объект может быть идентифицирован по другим атрибутам (например, по имени) или по комбинации этих атрибутов, то, конечно, не обязательно включать суррогатный ключ.
Как вы сказали, что выизучают Java, я хотел бы добавить несколько общих замечаний:
Вы объявили список в следующем примере:
private ArrayList<String> category;
Вы должны предпочесть интерфейс List вместо конкретногокласс реализации ArrayList здесь.
private List<String> category = new ArrayList<String>();
Это позволит вам использовать любой вид реализации (например, ArrayList или LinkedList), поскольку ваш код больше не зависит от конкретного класса реализации.
ВКроме того, я хотел бы упомянуть, что существует много платформ, которые поддерживают отображение содержимого базы данных на объекты Java.Поэтому, если вам нужно выполнить много сопоставлений, вам обязательно следует использовать одно из них (например, hibernate).