`

《Java Enterprise 最佳实践》【1】 JDBC最佳实践

阅读更多

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位数字字串是最好的方式了?]

 

 

------------------------------------------[本章完]--------------------------------------------------

分享到:
评论

相关推荐

    Think in Enterprise JAVA

    Bruce Eckel的《Think in Enterprise JAVA》无疑会深入探讨这些主题,并提供实际案例和最佳实践,帮助开发者在企业级Java开发中取得成功。通过阅读这些内容,读者不仅可以提升技术能力,还能培养出“企业级思维”,...

    Effective Enterprise Java

    这本书主要针对J2EE(Java 2 Platform, Enterprise Edition)平台,旨在提供一系列实用的编程指导和最佳实践,帮助开发者编写出高效、可靠且易于维护的企业级Java应用程序。 在Java EE(现在称为Jakarta EE)中,...

    Java Web开发实践教程ppt课件

    本教程通过12个章节的深入讲解,旨在让学习者全面了解并掌握Java Web开发的相关技术和最佳实践,为实际项目开发打下坚实的基础。每个章节都应包含丰富的实例和练习,以帮助学习者巩固理论知识,并提升实际操作能力。

    Thinking in Enterprise Java

    10. **设计模式与最佳实践**:最后,书中还会探讨在企业级Java开发中常用的设计模式,如工厂模式、单例模式、策略模式等,并分享一些最佳实践,帮助开发者编写更健壮、可维护的代码。 通过对《Thinking in ...

    J2EE最佳实践

    本书《O'Reilly – Java Enterprise Best Practices》主要聚焦于Java企业应用的最佳实践指南。通过详细分析和总结,为开发者提供了宝贵的指导,帮助他们在开发过程中遵循最佳实践,从而提高软件质量和效率。 #### 1...

    探讨J2EE最佳实践

    在IT行业中,J2EE(Java 2 Platform, Enterprise Edition)是用于构建企业级应用程序的框架,它提供了服务器端计算的全面解决方案。本篇将深入探讨J2EE的最佳实践,帮助开发者实现高效、可扩展且易于维护的系统。 ...

    Java 2 Bible Enterprise Edition.pdf

    尽管具体内容未被详细展示,但可以推测《Java 2 Bible Enterprise Edition》涵盖了J2EE的核心概念、组件模型、API使用、最佳实践以及案例研究。它可能是面向有一定Java基础的开发者,旨在帮助他们掌握企业级Java开发...

    java jdbc 连接数据库驱动程序包(oracle mysql sybase)

    Java JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,它提供了标准的方法来...同时,了解每个数据库特有的特性和最佳实践,能帮助我们编写更高效、更稳定的代码。

    Microsoft JDBC Driver 4.0 for SQL Server

    1. `sqljdbc_4.0.2206.100_chs.exe` 是Windows环境下的安装程序,用户可以通过执行这个文件将驱动添加到系统路径,方便在Java应用中自动发现和加载。 2. `sqljdbc_4.0.2206.100_chs.tar.gz` 是适用于Linux和Unix等...

    中小型公司的j2ee 最佳实践

    在中小型公司中,采用J2EE(Java 2 Platform, Enterprise Edition)进行软件开发可以提供稳定、可扩展和安全的企业级解决方案。这篇文档《中小型公司的J2EE最佳实践》虽然有些年份,但其核心理念和指导原则依然适用...

    Java 8, JDBC, JavaEE 7 (Servlets, JSP, JSTL), JUnit, Mockito.zip

    在学习和使用这些技术时,开发者应该掌握如何利用Java 8的新特性提高代码质量,理解JDBC的底层工作原理和最佳实践,了解Java EE 7中各组件的角色和交互方式,熟练运用JUnit进行单元测试,并懂得如何利用Mockito创建...

    sqljdbc-1.0.jar

    在使用`sqljdbc-1.0.jar`时,应遵循一些最佳实践,以确保安全性: 1. 避免硬编码数据库凭据:使用环境变量或配置文件存储敏感信息。 2. 使用预编译语句防止SQL注入攻击。 3. 关闭不再使用的连接,以释放资源。 4. ...

    JAVA 开发GlobalEC-Enterprise-SQL-1.1

    了解SQL的最佳实践,如使用参数化查询防止SQL注入,也是必要的。 5. **事务管理**:在企业级应用中,数据一致性非常重要。Java中的`java.sql.Connection`接口提供了开始、提交和回滚事务的方法,开发者需要了解如何...

    Sybase ASE 12.5 Adaptive Server Enterprise中的Java.pdf

    在使用Java与Sybase ASE 12.5进行集成时,还需要考虑一些安全性和最佳实践问题: - **权限管理**:合理分配不同用户对数据库资源的操作权限,避免因权限不当导致的安全隐患。 - **性能优化**:针对不同的应用场景...

    Effective.Enterprise.Java.中文版PDF和TXT下载

    8. **企业服务**:包括EJB(Enterprise JavaBeans)、JMS(Java消息服务)和JNDI(Java命名和目录接口)等企业级服务的使用和最佳实践。 9. **测试与调试**:强调单元测试的重要性,如何使用JUnit进行自动化测试,...

    JAVA培训文档、数据库

    首先,"JAVA精华.doc"可能是一份浓缩了Java核心概念和最佳实践的文档,可能涵盖了变量、数据类型(如整型、浮点型、字符型和布尔型)、运算符、流程控制(包括if语句、switch语句、循环结构如for、while、do-while)...

    JDBC开发人员指南和参考

    **JDBC(Java Database Connectivity)开发人员指南与参考** JDBC是Java编程语言中的一个标准接口,它允许Java应用程序连接到...在实际开发中,结合具体数据库的特性和最佳实践,能够进一步提升代码质量和应用性能。

    java 达内JAVA课件

    9. **设计模式**:达内课程可能会介绍一些常见的设计模式,如单例模式、工厂模式、观察者模式,这些模式是解决软件设计问题的最佳实践。 10. **Java EE**:对于企业级应用,Java Enterprise Edition(Java EE)提供...

Global site tag (gtag.js) - Google Analytics