恐怖的Hibernate和JavaFX Table CallBack!

目录 [隐藏]

  • 1 Hibernate
  • 2 JavaFX Table

Hibernate

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

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

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

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

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

        
            org.hibernate
            hibernate-core 5.4.2.Final 

接着是XML配置文件:



<hibernate-configuration>
    <session-factory> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialectproperty>  <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driverproperty> <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=trueproperty>  <property name="hibernate.connection.username">rootproperty> <property name="hibernate.connection.password">1234property>   <property name="hibernate.format_sql">trueproperty> <property name="hibernate.show_sql">trueproperty> session-factory> hibernate-configuration>

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

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

1.no entity found for query

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

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

最终,第一个问题是:

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

要加包名。

第二个:

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

 

JavaFX Table

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

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

        CallbackString>, TableCellString>> callback = new CallbackString>, TableCellString>>() { @Override public TableCellString> call(TableColumnString> param) { Button jfxButton = new Button("删除"); jfxButton.getStyleClass().add("danger"); return new TableCellString>() { 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); } } }; } };

转载于:https://www.cnblogs.com/yangchaojie/p/11312460.html

你可能感兴趣的:(恐怖的Hibernate和JavaFX Table CallBack!)