恐怖的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 ...
随机推荐
- C# 死锁 Task/AutoResetEvent
与之前<C# 死锁 TaskCompletionSource>类似,还有很多死锁的案例 使用Task异步转同步时,使用不当造成的死锁 private void Task_OnClick(o ...
- 教你用VMware Workstation Pro 12 安装XP系统
转 https://jingyan.baidu.com/article/ff42efa9102da3c19e220219.html
- leadcode的Hot100系列--17. 电话号码的字母组合--回溯的另一种想法的应用
提交leetcode的时候遇到了问题,一直说访问越界,但仔仔细细检查n多遍,就是检查不出来. 因为我用到了count全局变量,自加一来表明当前数组访问的位置, 后来突然想到,是不是在leetcode在 ...
- python异步IO编程(一)
python异步IO编程(一) 基础概念 协程:python generator与coroutine 异步IO (async IO):一种由多种语言实现的与语言无关的范例(或模型). asyncio ...
- ~~在python中踩过的坑以及问题~~(不断更新)
python说简单也不难,但是在这其中大大小小的点 真的是有够折磨人欸! 1. input 输入的时候,即使输入的是数字,数据类型也是字符串 2. 字符串本质上来看可以看作有序数组 3 ...
- 提升布局性能____Re-using Layouts with <include/>
可以再一个布局中通过"include"和"merge"元素进行复用其他的布局元素. 比如如下一个布局: <FrameLayout xmlns:androi ...
- linux应用程序设计--Makefile工程管理
Makefile文件描述了整个工程的编译.链接等规则.包括:工程中哪些源文件需要编译以及如何编译:需要创建哪些库文件以及如何创建这些库文件.如何产生最终的可执行文件. Makefile相关术语 1.规 ...
- GPS常识-A版(详)
第一章 绪论 1.简述GPS系统的特点有哪些? GPS在测绘工程中应用的优点 P13 ●定位精度高 应用实践证明,相对静态定位1小时以上观测解,其平面位置:在300-1500m范围内,绝对误差小于1m ...
- 学习4:总结# 1.列表 # 2.元祖 # 3.range
列表 -- list 有序,可变的,索引, 作用:存储数据的,支持很多种数据类型 定义方式: lst = [1,"alex","黑哥"] 增: append 追 ...
- JavaScript作用域及预编译
几乎所有的编程语言都可以存储,访问,修改变量,那在JavaScript中这些变量放在那里?程序如何找到他们? js被归类于解释执行语言,但事实上他也是一门编译语言,因为他也要编译,但于传统的编译语言不 ...