首页 文章

Hibernate Lazy在没有意义的情况下加载

提问于
浏览
2

我正在研究我在Hibernate中的第一个应用程序 . 我只有一个没有关联的实体用户

用户实体定义:

@Entity @Table(name =“USERS”)公共类用户{@Id
@Column(名称= “USER_NAME”)
private String userName;

@Column(名称= “PASSWORD”)
私有字符串密码;

@basic
@Column(名称= “电子邮件”)
私人String电子邮件;

和Users表创建时使用:

CREATE TABLE USERS(user_name varchar(45)PRIMARY KEY,password varchar(45)NOT NULL,email varchar(45)NOT NULL); (正如我所说,我保持简单:)

获取用户记录的方式如下:

用户c =(用户)sessionFactory.getCurrentSession() . load(User.class,userName);

问题是我没有返回User对象,而是使用新的处理程序成员返回User _ $$ _ javaassit对象

handler = org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer userName = null password = null email = null

我理解延迟加载是什么以及什么时候应该使用它,但这不是这些情况之一 . 我宁愿不为整个系统“关闭它”,因为我将在以后使用它 .

我在这里缺少什么建议?

2 回答

  • 0

    你错过了Session.get()方法 .

    Session.load() 正好用于返回代理 . 它需要父实体的状态,但只需要一个引用 .

    顺便说一句,JPA等效方法被称为 getReference() ,而相当于 get() 的JPA是 find() .

  • 1

    我认为默认情况下,hibernate会对所有实体进行延迟加载 . 检查此链接http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/performance.html

    只是一个想法,而不是直接使用hibernate(意味着使用会话),你可以尝试使用JPA规范的EntityManager,你可以尝试在你的情况下绑定Hibernate的持久单元 . 这有助于将来轻松移植到不同的ORM .

相关问题