恐怖的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 ...
随机推荐
- JavaScript原型和原型链( prototype 与 __proto__ )
一.函数对象 所有引用类型(函数.数组.对象)都拥有__proto__属性(隐式原型) 所有函数拥有 prototype 属性(显式原型)(仅限函数) 原型对象:拥有 prototype 属性的对象, ...
- 数据预处理之独热编码(One-Hot):为什么要使用one-hot编码?
一.问题由来 最近在做ctr预估的实验时,还没思考过为何数据处理的时候要先进行one-hot编码,于是整理学习如下: 在很多机器学习任务如ctr预估任务中,特征不全是连续值,而有可能是分类值.如下: ...
- 微服务-springboot多环境配置(开发生产测试环境切换)
springboot根据spring.profiles.active会去寻找应该加载开发环境配置还是生产环境配置 application.properties #生产环境,开发环境,测试环境切换 pr ...
- POJ 2728:Desert King(最优比率生成树)
http://poj.org/problem?id=2728 题意:有n个点,有三个属性代表每个点在平面上的位置,和它的高度.点与点之间有一个花费:两点的高度差:还有一个长度:两点的距离.现在要让你在 ...
- iOS 国际化 (国际化文字内容不改变,app名字国际化,一键切换语言)
首先我们要分三个步骤讲解怎么一步步实现app名字国际化.内容国际化.一键切换国际化的: 一.app设置内容或者可以说是app名字或者可以说Info.Plist中的东西国际化 app名字国际化 1. ...
- django ORM中的RelatedManager(关联管理器)
关联管理器应用在 一对多的表 或者 多对多的表 多对多表中的用法: 在多对多的表中 正向查询 #基于对象的查询 #正查 # author_obj = Author.objects.get(id=1) ...
- React躬行记(7)——表单
表单元素是一类拥有内部状态的元素,这些状态由其自身维护,通过这类元素可让用户与Web应用进行交互.HTML中的表单元素(例如<input>.<select>和<radio ...
- mysql语句优化原则
有时候发现数据量大的时候查询起来效率就比较慢了,学习一下mysql语句优化的原则,自己在正常写sql的时候还没注意到这些,先记录下来,慢慢一点一点的学,加油! 这几篇博客写的都可以: https:// ...
- 9.22考试 crf的视察 题解
这道题当时第一反应就是一道典型的NOIP第一题的难度,绝对要A掉,不然分数一定会被拉开. 然后就开始分析,暴力是一开始想的是用二维树状数组打加上暴力枚举长度,然而这道题满足二分性质,所以时间复杂度就是 ...
- 我的it博客开张啦
今天怀着激动地心情,在这里写下第一篇开博.之前也在新浪.网易等申请过博客,并且将新浪博客作为我的个人技术博客,当有一天看到cnblog时,觉得这里的博客以一本精美的书的批复呈现时,顿觉得很有...咋说 ...