Технология: Спящий режим 3.0
Предположим, у меня есть компания класса Entity.
@Entity
@Table(name="tbl_companies")
public class Company
{
@Id
@Column(name="id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
int id;
@Column(name="name")
String companyName;
@OneToMany(mappedBy = "company")
List<Employees> empList;
@OneToMany(mappedBy = "company")
List<Projects> projectList;
@OneToMany(mappedBy = "company")
List<Department> deptList;
@OneToMany(mappedBy = "company")
List<Branch> branchList;
}
В Entity Company, которая сопоставляется с базой данных с помощью аннотации hibernate, содержится список других связанных с ней объектов. Поскольку объекты этих сущностей, таких как Branch, Project, Employee, сами по себе являются тяжелыми объектами, это сделает объект Company очень тяжелым и будет содержать почти все данные db. Один из способов избежать этого — использовать ленивую загрузку. Еще один подход может заключаться в использовании List branchIdList, List projectIdList, который представляет собой список идентификаторов для объектов. Мой вопрос, какой подход является стандартной практикой и лучше использовать в такой ситуации. Лучше использовать включает в себя такие факторы, как производительность с точки зрения памяти, в основном, гибкость для программиста (первый является гибким для программиста, а второй использует меньше памяти). Другой вопрос: если я использую второй подход, что изменится в аннотации. Я сомневаюсь, что hibernate поддерживает список идентификаторов или поддерживает только полноценные объекты.
Спасибо