Java Enterprise 最佳实践 读书笔记
JDBC 最佳实践
1. 使用PreparedStatement
理由:
(1) 使用pstmt能使得sql代码的可读性更好
(2) 使用pstmt能防止SQL注入,比如其中一个参数带有单引号之类的.
(3) 一般而言,相对于Statement, pstmt的性能要更好,特别是在同一查询会进行多次的时候, 但是需要底层数据库支持这个”预编译语句”的特性.
[就其pstmt跟stmt的性能对比而言,在现在的JDBC中,只要不是很多,我认为还是statement的效率会更好.可以参看其他网友的帖子, 我参考了http://onjava.com/pub/a/onjava/excerpt/oraclejdbc_19/index.html?page=1 从这一页最下面的一个小节看起即可]
补充:
(1) 在JDBC中,有三类语句,分别是Statement, PreparedStatement, CallableStatement. 首先,在阿里巴巴的笔试题中就出现过选择哪个不是JDBC中的语句类型的题目, 所以这个知识点应该熟悉. 另外就是, 第三个类型的Statement, 是一个基于存储过程的语句. 在实际编程中, 还是应该尽量使用PreparedStatement, 但是对于较复杂的操作, 可以先使用PreparedStatement, 然后分析出性能瓶颈, 再将该部分转换为存储过程, 使用CallableStatement. 另外,存储过程允许DBA处理数据库逻辑, 允许程序员使用所谓的hook钩子函数, 但是千万不能把业务逻辑放到存储过程之中.
(2) 充分使用PreparedStatement池
[按照我的理解以及从http://www.ibm.com/developerworks/java/library/j-jdbcnew/ 看到的资料, 我认为要想从pstmt池取pstmt, Connection本身也需要在一个池子里面. 这个实践就有点像使用DBCP或者c3p0这些数据库连接池类库. 在使用他们的时候, 我们只能控制池子的大小而不能控制哪个pstmt返回池中, 取出哪个pstmt].
2. 通过数字引用列
从ResultSet中获取相应的列有以下两种方式:
(1) id = rs.getLong(1);
(2) id = rs.getLong(“personID”);
实际上两种方式都不是最好的, 推荐的方式如下:
Static private final int PERSON_ID = 1;
…
id = rs.getLong(PERSON_ID);
3. 在Swing应用中对JDBC代码另外建立线程
[我对于这点没有太大的感受, 原来做的桌面程序都是在windows底下, 使用SWT来进行的. 在使用SWT进行开发的时候,如果需要弹出两个窗口, 就需要注意线程同步的问题了. 这个问题倒是不难解决.]
4. 只使用前向导航的ResultSet
[否则说明你的程序设计或者SQL代码有问题, JAVA不应该负责结果集的随意的移动.]
5. 使用wasNull()检查
If(rs.wasNull()) {
…//java中没有对应着null的关键字
}
6. 在进行其他优化之前先对SQL进行优化
7. 不要在数据库中保存二进制数据
理由:
这样一来,数据库就会变成一个搬运大块数据的中介
对于这些二进制数据的特殊处理就无法优化
解决方法:
将这些数据放到文件系统之中. 但是这样也带来危害, 及文件可能被删除了,但是数据库中还保存着文件的信息. 不过这种完整性问题并不严重.
8. 不要使用有实际含义的主键
比如email地址,SSN等.因为外部世界的变化可能会对系统造成很大的影响,而且自己还无法把握. 最好的实践就是, 用无意义的数字, 比如64位的字符串. 64bit能防止空间耗尽.
[这么说来, hibernate中的32位数字字串是最好的方式了?]
------------------------------------------[本章完]--------------------------------------------------
分享到:
相关推荐
Bruce Eckel的《Think in Enterprise JAVA》无疑会深入探讨这些主题,并提供实际案例和最佳实践,帮助开发者在企业级Java开发中取得成功。通过阅读这些内容,读者不仅可以提升技术能力,还能培养出“企业级思维”,...
这本书主要针对J2EE(Java 2 Platform, Enterprise Edition)平台,旨在提供一系列实用的编程指导和最佳实践,帮助开发者编写出高效、可靠且易于维护的企业级Java应用程序。 在Java EE(现在称为Jakarta EE)中,...
本教程通过12个章节的深入讲解,旨在让学习者全面了解并掌握Java Web开发的相关技术和最佳实践,为实际项目开发打下坚实的基础。每个章节都应包含丰富的实例和练习,以帮助学习者巩固理论知识,并提升实际操作能力。
10. **设计模式与最佳实践**:最后,书中还会探讨在企业级Java开发中常用的设计模式,如工厂模式、单例模式、策略模式等,并分享一些最佳实践,帮助开发者编写更健壮、可维护的代码。 通过对《Thinking in ...
本书《O'Reilly – Java Enterprise Best Practices》主要聚焦于Java企业应用的最佳实践指南。通过详细分析和总结,为开发者提供了宝贵的指导,帮助他们在开发过程中遵循最佳实践,从而提高软件质量和效率。 #### 1...
在IT行业中,J2EE(Java 2 Platform, Enterprise Edition)是用于构建企业级应用程序的框架,它提供了服务器端计算的全面解决方案。本篇将深入探讨J2EE的最佳实践,帮助开发者实现高效、可扩展且易于维护的系统。 ...
尽管具体内容未被详细展示,但可以推测《Java 2 Bible Enterprise Edition》涵盖了J2EE的核心概念、组件模型、API使用、最佳实践以及案例研究。它可能是面向有一定Java基础的开发者,旨在帮助他们掌握企业级Java开发...
Java JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,它提供了标准的方法来...同时,了解每个数据库特有的特性和最佳实践,能帮助我们编写更高效、更稳定的代码。
1. `sqljdbc_4.0.2206.100_chs.exe` 是Windows环境下的安装程序,用户可以通过执行这个文件将驱动添加到系统路径,方便在Java应用中自动发现和加载。 2. `sqljdbc_4.0.2206.100_chs.tar.gz` 是适用于Linux和Unix等...
在中小型公司中,采用J2EE(Java 2 Platform, Enterprise Edition)进行软件开发可以提供稳定、可扩展和安全的企业级解决方案。这篇文档《中小型公司的J2EE最佳实践》虽然有些年份,但其核心理念和指导原则依然适用...
在学习和使用这些技术时,开发者应该掌握如何利用Java 8的新特性提高代码质量,理解JDBC的底层工作原理和最佳实践,了解Java EE 7中各组件的角色和交互方式,熟练运用JUnit进行单元测试,并懂得如何利用Mockito创建...
在使用`sqljdbc-1.0.jar`时,应遵循一些最佳实践,以确保安全性: 1. 避免硬编码数据库凭据:使用环境变量或配置文件存储敏感信息。 2. 使用预编译语句防止SQL注入攻击。 3. 关闭不再使用的连接,以释放资源。 4. ...
了解SQL的最佳实践,如使用参数化查询防止SQL注入,也是必要的。 5. **事务管理**:在企业级应用中,数据一致性非常重要。Java中的`java.sql.Connection`接口提供了开始、提交和回滚事务的方法,开发者需要了解如何...
在使用Java与Sybase ASE 12.5进行集成时,还需要考虑一些安全性和最佳实践问题: - **权限管理**:合理分配不同用户对数据库资源的操作权限,避免因权限不当导致的安全隐患。 - **性能优化**:针对不同的应用场景...
8. **企业服务**:包括EJB(Enterprise JavaBeans)、JMS(Java消息服务)和JNDI(Java命名和目录接口)等企业级服务的使用和最佳实践。 9. **测试与调试**:强调单元测试的重要性,如何使用JUnit进行自动化测试,...
首先,"JAVA精华.doc"可能是一份浓缩了Java核心概念和最佳实践的文档,可能涵盖了变量、数据类型(如整型、浮点型、字符型和布尔型)、运算符、流程控制(包括if语句、switch语句、循环结构如for、while、do-while)...
**JDBC(Java Database Connectivity)开发人员指南与参考** JDBC是Java编程语言中的一个标准接口,它允许Java应用程序连接到...在实际开发中,结合具体数据库的特性和最佳实践,能够进一步提升代码质量和应用性能。
9. **设计模式**:达内课程可能会介绍一些常见的设计模式,如单例模式、工厂模式、观察者模式,这些模式是解决软件设计问题的最佳实践。 10. **Java EE**:对于企业级应用,Java Enterprise Edition(Java EE)提供...