【发布时间】:2011-05-25 16:10:29
【问题描述】:
技术:休眠 3.0
假设我有实体类公司
@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;
}
在通过休眠注释映射到数据库的实体公司中,包含与其相关的其他实体的列表。由于 Branch、Project、Employee 等这些 Entities 的对象本身是重对象,因此会使 Company 对象非常重,并且包含几乎全部的 db 数据。避免这种情况的一种方法是使用延迟加载。另一种方法是使用 List branchIdList,List projectIdList 是对象的 id 列表。我的问题是哪种方法是标准做法,在这种情况下更适合使用。更好的使用主要包括内存方面的性能等因素,程序员的灵活性(第一个是程序员的灵活性,第二个使用更少的内存)。另一个问题是,如果我使用第二种方法,注释会发生什么变化。我怀疑 hibernate 是否支持 id 列表或仅支持完整的对象。
谢谢
【问题讨论】:
标签: java hibernate collections annotations one-to-many