【问题标题】:load method in Hibernate hitting databaseHibernate命中数据库中的加载方法
【发布时间】:2014-11-17 22:47:34
【问题描述】:

我了解 Hibernate 中的 session.load() 方法。

Employee emp = (Employee) session.load(Employee.class, new Long(1));

上面只会返回代理,在emp 对象上调用任何方法之前不会访问数据库。

我读到如果我调用标识符,即emp.getId(),那么也不会进行数据库调用。但是当我运行时,它确实调用了数据库,即使我在 Employee 类中有以下内容。

@Id
private Long id; 

请让我知道我做错了什么。

【问题讨论】:

标签: java hibernate proxy


【解决方案1】:

为了使getId() 不初始化代理,注释必须放在 getter 上,而不是放在字段上。

如果将它们放在字段上,据我所知,Hibernate 不会将 getter 视为访问实体持久状态的一种方式(因为它直接访问字段),而是作为可能做某事的方法除了简单地返回相应的属性。所以状态是在执行方法之前加载的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    • 2017-04-01
    • 2016-12-25
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多