恐怖的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);
}
}
};
}
};
恐怖的Hibernate和JavaFX Table CallBack!的更多相关文章
- hibernate某些版本(4.3)下报错 NoSuchMethodError: javax.persistence.Table.indexes()
其实本来没啥大问题,但到网上查的时候发现了一些误人子弟的说法,所以还是记下来吧. 现象: hibernate从低版本升级到某一个版本时(我们是升到4.3.10)时,在程序启动时会报错: java.la ...
- hibernate缓存机制(转)
原文出处:http://www.cnblogs.com/wean/archive/2012/05/16/2502724.html 一.why(为什么要用Hibernate缓存?) Hibernate是 ...
- hibernate(1) —— 入门
hibernate框架主要是实现数据库与实体类间的映射,使的操作实体类相当与操作hibernate框架. 只要实体类写好配置文件配好,就能实现和数据库的映射,其中实体类对应表,类的属性对应数据库的表字 ...
- 【Java EE 学习 44】【Hibernate学习第一天】【Hibernate对单表的CRUD操作】
一.Hibernate简介 1.hibernate是对jdbc的二次开发 2.jdbc没有缓存机制,但是hibernate有. 3.hibernate的有点和缺点 (1)优点:有缓存,而且是二级缓存: ...
- 【转】hibernate缓存:一级缓存和二级缓存
什么是缓存? 缓存是介于物理数据源与应用程序之间,是对数据库中的数据复制一份临时放在内存中的容器,其作用是为了减少应用程序对物理数据源访问的次数,从而提高了应用程序的运行性能.Hibernate在进行 ...
- ERROR: HHH000123: IllegalArgumentException in class: com.tt.hibernate.helloworld.News, setter method of property: date
问题描述: Hibernate连接数据库时,报出如下错误: 十一月 29, 2016 3:08:31 下午 org.hibernate.tool.hbm2ddl.SchemaUpdate execut ...
- Hibernate框架简单应用
Hibernate框架简单应用 Hibernate的核心组件在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层.它通过配置文件(hibernate.proper ...
- Hibernate缓存(转)
来自:http://www.cnblogs.com/wean/archive/2012/05/16/2502724.html 一.why(为什么要用Hibernate缓存?) Hibernate是一个 ...
- hibernate(二)annotation第一个示例
一.在数据库中创建teacher表(数据库hibernate) create table teache( id int auto_increment primary key, name ), titl ...
随机推荐
- React躬行记(6)——事件
React在原生事件的基础上,重新设计了一套跨浏览器的合成事件(SyntheticEvent),在事件传播.注册方式.事件对象等多个方面都做了特别的处理. 一.注册事件 合成事件采用声明式的注册方式, ...
- SPOJ:NPC2016A(数学)
http://www.spoj.com/problems/NPC2016A/en/ 题意:在一个n*n的平面里面,初始在(x,y)需要碰到每条边一次,然后返回(x,y),问最短路径是多长. 思路:像样 ...
- ConnectionPool实现redis在python中的连接
这篇文章主要介绍了Python与Redis的连接教程,Redis是一个高性能的基于内存的数据库,需要的朋友可以参考下 今天在写zabbix storm job监控脚本的时候用到了python的re ...
- Linux安装httpd
一.相关下载 1.httpd下载 官网下载:http://httpd.apache.org/ 或者 百度网盘链接: https://pan.baidu.com/s/1JPdU28tv6rePKJanB ...
- WPF 入门笔记之控件内容控件
一.控件类 在WPF中和用户交互的元素,或者说.能够接受焦点,并且接收键盘鼠标输入的元素所有的控件都继承于Control类. 1. 常用属性: 1.1 Foreground:前景画刷/前景色(文本颜色 ...
- Python一秒提供Rest接口
Python一秒提供Rest接口 使用的是Anaconda安装的Python环境; 新建py文件(例如:restapi.py) # -*- coding: utf-8 -*- from flask i ...
- C# ExcelAddIn 开发笔记
好久都没有写博客了,最近真的是太忙了,接手公司要做的一个小的新的项目,从接触认识到一个新东西,再到自己琢磨研究,最终结合公司业务把整个excel插件项目完成,还是有一点点成就感.以下是项目中基本上大致 ...
- Excel导出功能超时解决方案 -- 异步处理
背景 有运营同学反馈,最近导出excel会出现超时的情况,初步判断是数据增长太快,数据量太大,请求时间超过了设置的超时时间 尝试 有考虑直接更改该请求的超时时长,可是治标不治本 网上搜索发现,有很多人 ...
- Excel催化剂开源第39波-json字符串解释的超能类库
对一般VBA开发群体来说,处理json.xml结构的数据源,在VB6的世界里,是一件非常不容易的事情,隐约记得当年自己从哪里找到了一个使用字典实现的json解释的函数,实在非常稀有. 在.Net的世界 ...
- 个人永久性免费-Excel催化剂功能第48波-拆分工作薄内工作表,堪称Excel界的单反
一个工作薄有多个相同类型的工作表,然后想通过批量操作,把每个工作表都另存为一个工作薄文件,这个批量拆分工作薄,绝大多数插件都有此功能,就如懂点VBA的高级用户也常常有点不屑于用插件来完成,自己写向行V ...