java - 是使用 Hibernate HQL 或 Criteria 指针查询返回的对象还是数据库中的实际数据

标签 java hibernate

所以我知道在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/

相关文章:

java - 如何不重复使用BitmapShader

java - PDFBox TextPosition x、y 和宽度、高度相差 2 倍

java - 如何在 Spring Boot 1.5.1 Hibernate 中防止隐式缓存

java - Spring JPA 保存 transient 实体

hibernate - 无法删除或更新父行 : a foreign key constraint fails with Join tables

java - 密码套件不可用 - 如何添加/启用? Tomcat SSL

java - href 参数不调用 Controller

java - 如何使用 Spring Boot 连接到 H2 作为远程数据库而不是嵌入式模式?

sql - Spring 启动和 hibernate : update all column's rows where entry is null

java - Hibernate @ManyToMany 在插入的拥有端插入 0