所以我知道在java中,如果您使用连接访问数据库并在结果集中获取查询结果,那么数据实际上并没有返回,而是返回到数据库中数据的指针。我的问题是,使用 Hibernate 时是同样的事情吗?
我在下面发布了与该表相关的 .java 类。
当我执行查询并假设我使用了 Criteria 时
List<TrackItem> list = null;
Criteria c = session.createCriteria(TrackItem.class);
c.add(Expression.between("itemTime, 100L, 200L));
list = c.list();
当我执行 list = c.list 时,我实际上拥有该对象还是它是指向数据库中数据的指针。
trackItem 表的 .java 类
/**
* TrackItem generated by hbm2java
*/
@Entity
@Table(name = "track_item", schema = "d2d")
public class TrackItem implements java.io.Serializable {
/**
* ID.
*/
private static final long serialVersionUID = 8469898950069782997L;
private long id;
private TrackItemType trackItemType;
private long itemTime;
private Long frameNumber;
private String imageSource;
private String trackItemUUID;
private Track track;
public TrackItem() {
}
public TrackItem(long id, TrackItemType trackItemType, long itemTime) {
this.id = id;
this.trackItemType = trackItemType;
this.itemTime = itemTime;
}
public TrackItem(long id, TrackItemType trackItemType, long itemTime,
Long frameNumber, String imageSource,
String trackItemUUID, Track track) {
this.id = id;
this.trackItemType = trackItemType;
this.itemTime = itemTime;
this.frameNumber = frameNumber;
this.imageSource = imageSource;
this.trackItemUUID = trackItemUUID;
this.track = track;
}
@Column(name = "frame_number")
public Long getFrameNumber() {
return this.frameNumber;
}
@Id
@Column(name = "id", unique = true, nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
public long getId() {
return this.id;
}
@Column(name = "image_source")
public String getImageSource() {
return this.imageSource;
}
@Column(name = "item_time", nullable = false)
public long getItemTime() {
return this.itemTime;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "track_id", nullable = false)
public Track getTrack() {
return this.track;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "track_item_type_id", nullable = false)
public TrackItemType getTrackItemType() {
return this.trackItemType;
}
@Column(name = "track_item_uuid", nullable = false)
public String getTrackItemUUID() {
return this.trackItemUUID;
}
public void setFrameNumber(Long frameNumber) {
this.frameNumber = frameNumber;
}
public void setId(long id) {
this.id = id;
}
public void setImageSource(String imageSource) {
this.imageSource = imageSource;
}
public void setItemTime(long itemTime) {
this.itemTime = itemTime;
}
public void setTrack(Track track) {
this.track = track;
}
public void setTrackItemType(TrackItemType trackItemType) {
this.trackItemType = trackItemType;
}
public void setTrackItemUUID(String trackItemUUID) {
this.trackItemUUID = trackItemUUID;
}
}
最佳答案
您将拥有实际对象和子对象。除非您为子对象启用了惰性。
关于java - 是使用 Hibernate HQL 或 Criteria 指针查询返回的对象还是数据库中的实际数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21171088/