У меня есть 2 таблицы: Документ и Категория со многими отношениями. Кроме того, отношение имеет атрибут с именем weight .
У меня также есть соответствующие Классы с Документом , представленным следующим образом:
public class Document {
private Integer id; // Id from DB, 0 if new object
private String name;
private String url;
private Date dateCreated;
private List<Category> categories;
// getters & setters...
}
Теперь у меня есть 2 вопроса, особенно это касается лучших практик.
Я хочу получить данные из базы данных (MySQL) и создать свои объекты. Я использую оператор SELECT следующим образом:
SELECT doc.*, GROUP_CONCAT(cat.CategoryID SEPARATOR ',') AS CategoryGrp FROM document doc
LEFT JOIN doc_category dc ON doc.Doc_ID = dc.DC_DocID
LEFT JOIN category cat ON dc.DC_CategoryID = cat.CategoryID
GROUP BY doc.Doc_ID
В наборе результатов rs.getString (5) -> CategoryGrp будет иметь идентификаторы связанных категорий. Теперь, как мне приступить к созданию моего объекта Document, связав его Категории, как того требует Класс.
Я, как правило, делаю новый SELECT запрос к таблице Категория , чтобы получить другие данные (например, имя категории) в цикле, пока он еще находится на первом ResultSet.
Это хорошая практика? Разве нет «рекомендуемого» способа?
Мой второй вопрос касается атрибута weight в соединительной таблице. В каком объекте я должен записать его значение? Я предполагаю, что это категория, но не совсем уверен, поскольку объект категории не может иметь вес сам по себе ...
Надеюсь, я достаточно ясно.
Спасибо