我的项目中有一个简单的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组件
如果我发表评论,一切正常。 这是什么原因?
感谢。
答案 0 :(得分:1)
不要在构造函数中做昂贵的工作(比如打开会话)。最好只使用构造函数中的赋值。在放置组件的情况下,NetBeans正在调用其构造函数。哪个无法连接,因为可能没有加载适当的配置,或者因为类路径是正确的,或者其他什么。
为session
创建一个getter和setter,并在getter中使用延迟初始化:
public Session getSession() {
if (session == null) {
HibernateUtils.getSessionFactory().openSession();
}
}
那就是说,我认为您可能遇到会话处理问题。也许您可以查看getCurrentSession()
的{{1}}方法。
另一件事 - 不要混用数据库访问和UI。移动面板外的数据处理。