我想知道在创建常规查询时是否会急切地或懒惰地提取Int
或Varchar2
等属性。
@Entity
@Table(name = "ROOM")
public class Room implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(name = "room_id")
private Integer id;
@Column(name = "number")
private String number;
@Column(name = "capacity")
private Integer capacity; //Will this be fetched eagerly???
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "building_id")
private Building building;
...
...
...
}
基本上:
Room room = getRoomById(5); // select room from Room room where room.id = 5;
Integer roomCap = room.getCapacity(); //Will this create another query?
或者它已经在room
对象中?
答案 0 :(得分:1)
渴望或懒惰的提取策略适用于您希望从另一个表加载数据而不是属于同一实体或表的列的关系或关联实体。检索实体时不会获取属于同一实体或表的列或字段,也不会触发单独的查询。
答案 1 :(得分:0)
在数据调用db之后使用延迟加载之后,你希望对象内部的这个对象你的查询转到db并执行db。
当你渴望属性获取所有元素那个对象
时