我正在使用Hibernate中的第一个应用程序。我只有一个没有关联的实体用户
用户实体定义:
@Entity @Table(name =“USERS”)公共类用户{
@Id @Column(name="USER_NAME") private String userName; @Column(name="PASSWORD") private String password; @Basic @Column(name="EMAIL") private String email;
和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, 用户名);
问题是我没有返回User对象,而是使用新的处理程序成员返回User _ $$ _ javaassit对象
handler = org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer userName = null password = null email = null
我理解延迟加载是什么以及什么时候应该使用它,但这不是这些情况之一。 我宁愿不为整个系统“关闭它”,因为我将在以后使用它。
我在这里缺少什么建议?
答案 0 :(得分:1)
您错过了Session.get()
方法。
Session.load()
正好用于返回代理。例如,当您只需要将实体引用设置为子实体的父项时,它很有用。在这种情况下,您不需要父实体的状态,只需要引用。
getReference()
,而等同于get()
的JPA为find()
。
答案 1 :(得分:0)
我认为默认情况下,hibernate会对所有实体进行延迟加载。点击此链接http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/performance.html
只是一个想法,而不是直接使用hibernate(意味着使用会话),你可以尝试使用JPA规范的EntityManager,你可以尝试在你的情况下绑定Hibernate的持久单元。这有助于将来移植到不同的ORM。