zoukankan      html  css  js  c++  java
  • *的Hibernate和JavaFX Table CallBack!

    Hibernate

    最近在做 JavaFX 应用,不管再怎么避免数据持久化,但面对几十万的数据量的时候也只能乖乖的去配置持久层框架了。

    一开始打算还是使用Mybatis,我在做Web的时候就是一只用Mybatis框架,而Mybatis-plus的强大构造器用着也非常顺手,可是JavaFX如果使用Mybatis-plus就必须要代码生成器,那太麻烦了,不干。

    而mybatis原生框架又太原生了,加上配置出一肚子火,换Hibernate!

    虽然之前没用过,但Hibernate早在我刚学Java的时候就已经是如雷灌耳了,而且是一个自带Sql构造器的全自动持久层框架,觉得比Mybatis更加稳定。

    接着就是配置,Maven中引入:

            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
                <version>5.4.2.Final</version>
            </dependency>

    接着是XML配置文件:

    <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    
    <hibernate-configuration>
        <session-factory>
            <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> <!-- 数据库方言 -->
            <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property><!-- 引用jdbc包 -->
            <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/bbs?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&nullCatalogMeansCurrent=true</property> <!-- 数据库链接 -->
            <property name="hibernate.connection.username">root</property>
            <property name="hibernate.connection.password">1234</property>
    <!--        <property name="hibernate.connection.username">root</property>-->
    <!--        <property name="hibernate.connection.password">1234</property>-->
            <property name="hibernate.format_sql">true</property>
            <property name="hibernate.show_sql">true</property>
    
        </session-factory>
    
    </hibernate-configuration>

    至于实体类和映射文件直接用IDEA生成,太特么爽了!

    接着,两个异常让我搞了半天。

    1.no entity found for query

    2.MappingNotFoundException: resource:**.hbm.xml not found

    网上了博客答案没什么新意,解决不了我的问题。

    最终,第一个问题是:

    List<HupuOriginEntity> hupuOriginEntities = session.createQuery("from xyz.chaojie.db.HupuOriginEntity").list();

    要加包名。

    第二个:

    Entity.hbm.xml 文件放在resouce文件夹中!

    JavaFX Table

    我只是想让JavaFX的Table多一个操作列,加一个可以删除一行数据的按钮。

    这代码量和逻辑令我十分害怕。

            Callback<TableColumn<HupuOriginEntity, String>, TableCell<HupuOriginEntity, String>> callback = new Callback<TableColumn<HupuOriginEntity, String>, TableCell<HupuOriginEntity, String>>() {
                @Override
                public TableCell<HupuOriginEntity, String> call(TableColumn<HupuOriginEntity, String> param) {
                        Button jfxButton = new Button("删除");
                        jfxButton.getStyleClass().add("danger");
                    return new TableCell<HupuOriginEntity, String>() {
                        Button btn = jfxButton;
    
                        @Override
                        protected void updateItem(String item, boolean empty) {
                            super.updateItem(item, empty);
                            if (empty) {
                                setGraphic(null);
                                setText(null);
                            } else {
                                btn.setOnAction(event -> {
                                    Dialog dialog = new Dialog(
                                            DialogType.CONFIRMATION,
                                            DialogStyle.UNDECORATED,
                                            "信息",
                                            "确定删除?");
    
                                    dialog.showAndWait();
                                    HupuOriginEntity delEntity = getTableView().getItems().get(getIndex());
                                    if (dialog.getResponse() == DialogResponse.YES) {
                                        Transaction transaction = session.beginTransaction();
                                        session.delete(delEntity);
                                        transaction.commit();
                                        reloadTable();
                                    }
                                });
                                setGraphic(btn);
                                setText(null);
                            }
                        }
                    };
                }
            };
  • 相关阅读:
    常用 Git 命令清单
    radhat 6.4/centos 6.4 下编译安装 最新ruby 2.1.5
    centos 6.4/redhat 6.4 安装gitlab
    微信小程序——navigator无法跳转
    微信小程序——修改data里面数组某一个值
    微信小程序——template的循环嵌套
    微信小程序——template的使用方法
    node学习笔记8——发布npm包
    淘宝镜像使用方法
    node学习笔记7——npm安装包
  • 原文地址:https://www.cnblogs.com/yangchaojie/p/11312460.html
Copyright © 2011-2022 走看看