四、安全性
一般来说,拼接查询语句都会有安全隐患,容易被sql注入攻击 。不论是jdbc,还是hql/JPQL,只要使用拼接的查询语句都是不安全的 。对于JDBC来说,使用参数化的sql语句代替拼接,可以解决问题 。而JPA则应该使用Criteria API解决这个问题 。
对于JOOQ之类的DSL风格框架,最终会被render为参数化的sql,天生免疫sql注入攻击 。Ebean也支持DSL方式编程,也同样免疫sql注入攻击 。
这是因为DSL风格编程参数化查询比拼接字符串查询更简单,没人会拼接字符串 。而jdbc/hql/JPQL拼接字符串有时候比参数化查询更简单,特别是jdbc,很多人会偷懒使用不安全的方式 。
五、JOOQ的失败之处
可能大部分人会不同意,虽然Hibernate、JPA仍然大行其道,是最主流的持久化框架,但其实这种封装SQL的纯正ORM已经过时,效益低于使用它们的代价,应该淘汰了 。MyBatis虽然有很多优点,但它的优点JOOQ基本上都有,而且多数还更好 。MyBatis最大的缺点是难以避免写xml文件,xml文件编写困难,容易出错,还不容易查找错误 。相对于JOOQ,MyBatis在多数情况下没有任何优势 。
Ebean同时具有很多不同框架的优点,但它是基于JPA的,难免有JPA的各种限制,这是致命的缺点 。
JOOQ这个极端轻量级的框架技术上是最完美的,突然有一天几个Web系统同时崩了,最后发现是JOOQ试用期过期了,这是JOOQ的失败之处,它不是完全免费的,只是对MySql之类的开源数据库免费 。
最终,我决定选择JDBC Template 。
推荐阅读
- 数据存储层HBase进阶之写流程
- 生意参谋竞店怎么删除 怎么看竞店的销售数据
- 常见的收集数据的方法有哪些?
- 什么是Python中的Dask,它如何帮助你进行数据分析?
- 数据库锁分类
- 生意参谋看竞争对手数据 淘宝生意参谋怎么看同行数据
- 淘宝生意参谋怎么看同行转化率 阿里巴巴生意参谋怎么看同行数据
- 淘宝生意参谋竞品分析 淘宝店铺生意参谋怎么看数据
- 内网渗透 -- 捕获内网数据包
- MySQL数据引擎,12缸就是猛