没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
3页
Java开发者对于面向对象编程思维与命令行编程思维的协调程度,取决于他们如下几种能力的水平: 技巧(任何人都可以编写命令行形式的代码) 教条(有的人使用“模式 – 模式”的方式,即模式无处不在,并以名字作为标识) 情绪状况(在初期,真正面向对象形式的代码比起命令式代码会更加难懂。) 但是,当Java开发人员编写SQL语句时,一切都变得不同了。SQL是一种说明式语言,与面向对象思想和命令式思想无关。在SQL语言中,查询非常容易表达。但它也不是那么容易以最佳或最正确地方式编写出来。开发人员不仅需要重新思考自己的编程模式,还需要从集合论的角度进行深入思考。 以下是Java开发人员使JDBC或jOO
资源详情
资源评论
资源推荐
10种种Java开发者编写开发者编写SQL语句时常见错误语句时常见错误
Java开发者对于面向对象编程思维与命令行编程思维的协调程度,取决于他们如下几种能力的水平:
技巧(任何人都可以编写命令行形式的代码)
教条(有的人使用“模式 – 模式”的方式,即模式无处不在,并以名字作为标识)
情绪状况(在初期,真正面向对象形式的代码比起命令式代码会更加难懂。)
但是,当Java开发人员编写SQL语句时,一切都变得不同了。SQL是一种说明式语言,与面向对象思想和命令式思想无关。
在SQL语言中,查询非常容易表达。但它也不是那么容易以最佳或最正确地方式编写出来。开发人员不仅需要重新思考自己的
编程模式,还需要从集合论的角度进行深入思考。
以下是Java开发人员使JDBC或jOOQ编写SQL语句时,几种常见的错误几种常见的错误:
1.忘记了忘记了NULL
误解NULL的含义可能是Java开发人员编写SQL最常犯的错误。这有可能是因为NULL也被称为UNKNOWN,但也有其他的原
因。当然如果它只被叫做UNKNOWN,会更容易理解一些。另一个原因是,JDBC在获取数据,或绑定变量时,SQL中的
NULL被映射到Java中的null。这可能会导致人们认为类似Java中null==null的情况,SQL中也存在NULL= NULL。
一个更离奇的误解NULL的例子是,当NULL谓词用于行值表达式时。
另一个微妙的问题产生与对NOTIn 反连接中NULL含义的误解。
解决办法解决办法
不断的训练自己。要时刻明确NULL的含义,每次你写SQL时,都要考虑:
对于NULL来说谓词是否正确?
NULL是否影响该函数的结果?
2.在在Java内存中处理数据内存中处理数据
一些Java开发者十分了解SQL特性。偶尔JOIN,零散的UNION,没什么问题。但如果遇到视窗功能,结果集分组等情况又怎
么样呢?很多Java开发人员会把SQL数据加载到内存,把数据转换成一些适合的集合类型,以十分冗长的循环结构在集合上执
行恼人数学运算(至少在Java 8改进容器之前是这样的)。
但一些SQL数据库除了支持SQL标准外,还支持先进的OLAP特性,执行效率更好,且更容易编写。一个非标准的例子就是甲
骨文的MODEL子句。只是让数据库进行数据处理过程,将最终获取的结果加载到Java内存中。因为一些非常聪明的人已经优
化了这些昂贵的产品。所以,事实上,通过向OLAP数据库上进行迁移,您将得到两个好处:
简洁。它可能使得在SQL中编写正确代码会比在Java中相对容易
性能。该数据库将可能比你的算法要快。更重要的是,你不必再通过网络传输数百万条记录。
解决办法解决办法
每次你在Java中实现以数据为中心的算法时,要试着问问自己:有没有办法让数据库执行这些工作,而只把结果交付给我?
3.尽量使用尽量使用UNION,而不是,而不是UNION ALL
相对于UNION,UNION ALL需要额外的关键字显得相形见绌。如果在SQL标准已定义如下支持,那将会好很多:
UNION(允许重复)
UNION DISTINCT(去掉重复)
一般很少需要去除重复(有时去重甚至是错误的),而且对于具有很多列的大结果集,它往往很慢,因为这两个子查询需要排
weixin_38685961
- 粉丝: 8
- 资源: 907
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0