[java bean] hibernate Session会破坏java bean吗?

时间:2010-06-13 07:49:29

标签: java hibernate swing netbeans javabeans

我的项目中有一个简单的JPanel bean,现在我想把我的面板bean类拖到我的jframe中。

我的面板bean类是这样的:

public class BeanPanel extends javax.swing.JPanel {

/** Creates new form BeanPanel */
public BeanPanel () {
    initComponents();
    Session session=HibernateUtil.getSessionFactory().openSession();
}

这段代码似乎破坏了bean:

Session session=HibernateUtil.getSessionFactory().openSession();

当我尝试将类拖入我的JFrame bean时,我收到此错误消息:

  

此组件无法实例化。请确保它是JavaBeans组件

如果我发表评论,一切正常。 这是什么原因?

感谢。

1 个答案:

答案 0 :(得分:1)

不要在构造函数中做昂贵的工作(比如打开会话)。最好只使用构造函数中的赋值。在放置组件的情况下,NetBeans正在调用其构造函数。哪个无法连接,因为可能没有加载适当的配置,或者因为类路径是正确的,或者其他什么。

session创建一个getter和setter,并在getter中使用延迟初始化:

public Session getSession() {
   if (session == null) {
       HibernateUtils.getSessionFactory().openSession();
   }
}

那就是说,我认为您可能遇到会话处理问题。也许您可以查看getCurrentSession()的{​​{1}}方法。

另一件事 - 不要混用数据库访问和UI。移动面板外的数据处理。