我正在浏览休眠文档,文档说休眠需要我们所有持久类的无参数构造函数:
无参数构造函数是所有持久类的要求;Hibernate 必须使用 Java 反射为您创建对象。构造函数可以是私有的,但是运行时代理生成和高效的数据检索需要包或公共可见性,而无需字节码检测。
但是当我通过创建一个没有任何无参数构造函数的 POJO 类并通过放置一个带参数的构造函数来创建一个用于测试的示例程序时,我预计 Hibernate 会抛出一个异常,但我惊讶地发现我没有收到异常。
这是我的 POJO:
public class Event {
private Long id;
private String title;
public Event(String title) {}
public Long getId() {
return id;
}
private void setId(Long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
这是我的程序:
import org.hibernate.Session;
import java.util.*;
import org.hibernate.tutorial.domain.Event;
import org.hibernate.tutorial.util.HibernateUtil;
public class EventManager {
public static void main(String[] args) {
EventManager mgr = new EventManager();
mgr.createAndStoreEvent("My Event", new Date());
HibernateUtil.getSessionFactory().close();
}
private void createAndStoreEvent(String title, Date theDate) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Event theEvent = new Event("");
theEvent.setTitle(title);
theEvent.setDate(theDate);
session.save(theEvent);
session.getTransaction().commit();
}
}
我还配置了休眠配置和映射文件。现在,当我执行这个程序时,我可以看到一条新记录存储在我的数据库中。
我是 Hibernate 的新手,请帮助我理解 hibernate 文档中给出的声明,因为文档说我们需要一个无参数构造函数。我正在使用 Hibernate 3.x 版本。