仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 950|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA网站制作之经由过程JDBC毗连oracle数据库的十年夜技能

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:40:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
你说是sun公司对她研究的透还是微软?针对自己工具开发的.net性能上肯定会站上风的。oracle|技能|数据|数据库
  Java数据库毗连(JDBC)API是一系列可以让Java编程职员会见数据库的接口,各个开辟商的接口其实不完整不异。在利用多年的Oracle公司的JDBC后,我堆集了很多技能,这些技能可以使我们更好地发扬体系的功能和完成更多的功效。
  1、在客户端软件开辟中利用Thin驱动程序
  在开辟Java软件方面,Oracle的数据库供应了四品种型的驱动程序,二种用于使用软件、applets、servlets等客户端软件,别的二种用于数据库中的Java存储历程等服务器端软件。在客户机端软件的开辟中,我们能够选择OCI驱动程序或Thin驱动程序。OCI驱动程序使用Java当地化接口(JNI),经由过程Oracle客户端软件与数据库举行通信。Thin驱动程序是纯Java驱动程序,它间接与数据库举行通信。为了取得最高的功能,Oracle倡议在客户端软件的开辟中利用OCI驱动程序,这仿佛是准确的。但我倡议利用Thin驱动程序,由于经由过程屡次测试发明,在一般情形下,Thin驱动程序的功能都凌驾了OCI驱动程序。
  2、封闭主动提交功效,进步体系功能
  在第一次创建与数据库的毗连时,在缺省情形下,毗连是在主动提交形式下的。为了取得更好的功能,能够经由过程挪用带布尔值false参数的Connection类的setAutoCommit()办法封闭主动提交功效,以下所示:
  conn.setAutoCommit(false);
  值得注重的是,一旦封闭了主动提交功效,我们就必要经由过程挪用Connection类的commit()和rollback()办法来野生的体例对事件举行办理。
  3、在静态SQL或偶然间限定的命令中利用Statement对象
  在实行SQL命令时,我们有二种选择:可使用PreparedStatement对象,也能够利用Statement对象。不管几次地利用统一个SQL命令,PreparedStatement都只对它剖析和编译一次。当利用Statement对象时,每次实行一个SQL命令时,城市对它举行剖析和编译。这大概会使你以为,利用PreparedStatement对象比利用Statement对象的速率更快。但是,我举行的测试标明,在客户端软件中,情形并不是云云。因而,在偶然间限定的SQL操纵中,除非成批地处置SQL命令,我们应该思索利用Statement对象。
  别的,利用Statement对象也使得编写静态SQL命令加倍复杂,由于我们能够将字符串联接在一同,创建一个无效的SQL命令。因而,我以为,Statement对象可使静态SQL命令的创立和实行变得加倍复杂。
  4、使用helper函数对静态SQL命令举行格局化
  在创立利用Statement对象实行的静态SQL命令时,我们必要处置一些格局化方面的成绩。比方,假如我们想创立一个将名字OReilly拔出表中的SQL命令,则必需利用二个相连的“”号交换OReilly中的“”号。完成这些事情的最好的办法是创立一个完成交换操纵的helper办法,然后在毗连字符串心折用公式表达一个SQL命令时,利用创立的helper办法。与此相似的是,我们可让helper办法承受一个Date型的值,然后让它输入基于Oracle的to_date()函数的字符串表达式。
  5、使用PreparedStatement对象进步数据库的整体效力
  在利用PreparedStatement对象实行SQL命令时,命令被数据库举行剖析和编译,然后被放到命令缓冲区。然后,每当实行统一个PreparedStatement对象时,它就会被再剖析一次,但不会被再次编译。在缓冲区中能够发明预编译的命令,而且能够从头利用。在有大批用户的企业级使用软件中,常常会反复实行不异的SQL命令,利用PreparedStatement对象带来的编译次数的削减可以进步数据库的整体功能。假如不是在客户端创立、准备、实行PreparedStatement义务必要的工夫善于Statement义务,我会倡议在除静态SQL命令以外的一切情形下利用PreparedStatement对象。
  6、在成批处置反复的拔出或更新操纵中利用PreparedStatement对象
  假如成批地处置拔出和更新操纵,就可以够明显地削减它们所必要的工夫。Oracle供应的Statement和CallableStatement其实不真正地撑持批处置,只要PreparedStatement对象才真正地撑持批处置。我们可使用addBatch()和executeBatch()办法选择尺度的JDBC批处置,大概经由过程使用PreparedStatement对象的setExecuteBatch()办法和尺度的executeUpdate()办法选择速率更快的Oracle专有的办法。要利用Oracle专有的批处置机制,能够以以下所示的体例挪用setExecuteBatch():
PreparedStatementpstmt3Dnull;
try{
((OraclePreparedStatement)
pstmt).setExecuteBatch(30);
...
pstmt.executeUpdate();
}

  挪用setExecuteBatch()时指定的值是一个下限,当到达该值时,就会主动地激发SQL命令实行,尺度的executeUpdate()办法就会被作为批处置送到数据库中。我们能够经由过程挪用PreparedStatement类的sendBatch()办法随时传输批处置义务。
  7、利用Oraclelocator办法拔出、更新年夜对象(LOB)
  Oracle的PreparedStatement类不完整撑持BLOB和CLOB等年夜对象的处置,特别是Thin驱动程序不撑持使用PreparedStatement对象的setObject()和setBinaryStream()办法设置BLOB的值,也不撑持使用setCharacterStream()办法设置CLOB的值。只要locator自己中的办法才干够从数据库中猎取LOB范例的值。可使用PreparedStatement对象拔出或更新LOB,但必要利用locator才干猎取LOB的值。因为存在这二个成绩,因而,我倡议利用locator的办法来拔出、更新或猎取LOB的值。
  8、利用SQL92语法挪用存储历程
  在挪用存储历程时,我们可使用SQL92或OraclePL/SQL,因为利用OraclePL/SQL并没有甚么实践的优点,并且会赐与后保护你的使用程序的开辟职员带来贫苦,因而,我倡议在挪用存储历程时利用SQL92。
  9、利用ObjectSQL将对象形式转移到数据库中
  既然能够将Oracle的数据库作为一种面向对象的数据库来利用,就能够思索将使用程序中的面向对象形式转到数据库中。今朝的办法是创立Javabean作为假装的数据库对象,将它们的属性映照到干系表中,然后在这些bean中增加办法。只管如许作在Java中没有甚么成绩,但因为操纵都是在数据库以外举行的,因而其他会见数据库的使用软件没法使用对象形式。假如使用Oracle的面向对象的手艺,能够经由过程创立一个新的数据库对象范例在数据库中仿照其数据和操纵,然后利用JPublisher等工具天生本人的Javabean类。假如利用这类体例,不仅Java使用程序可使用使用软件的对象形式,其他必要共享你的使用中的数据和操纵的使用软件也能够利用使用软件中的对象形式。
  10、使用SQL完成数据库内的操纵
  我要向人人先容的最主要的履历是充实使用SQL的面向汇合的办法来办理数据库处置需求,而不是利用Java等历程化的编程言语。
  假如编程职员要在一个表中查找很多行,了局中的每一个行城市查找其他表中的数据,最初,编程职员创立了自力的UPDATE命令来成批地更新第一个表中的数据。与此相似的义务能够经由过程在set子句中利用多列子查询而在一个UPDATE命令中完成。当可以在单一的SQL命令中完成义务,何须要让数据在网下流来流往的?我倡议用户仔细进修怎样最年夜限制地发扬SQL的功效。


还有就是总有人问我到底该学习什么语言,什么语言有前途,那么我的回答是不论是C,C++,java,.net,ruby,asp或是其他语言都可以学,编程的关键不是语言,而是思想。
灵魂腐蚀 该用户已被删除
沙发
发表于 2015-1-19 13:23:47 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
变相怪杰 该用户已被删除
板凳
发表于 2015-1-24 12:43:04 来自手机 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
admin 该用户已被删除
地板
发表于 2015-1-28 05:45:30 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
爱飞 该用户已被删除
5#
发表于 2015-2-5 11:49:02 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
愤怒的大鸟 该用户已被删除
6#
发表于 2015-2-8 19:59:19 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
若天明 该用户已被删除
7#
发表于 2015-2-26 01:35:06 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
山那边是海 该用户已被删除
8#
发表于 2015-3-8 11:17:17 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
小妖女 该用户已被删除
9#
发表于 2015-3-11 08:44:34 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
因胸联盟 该用户已被删除
10#
发表于 2015-3-22 02:33:14 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
再见西城 该用户已被删除
11#
发表于 2015-3-22 04:10:22 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
活着的死人 该用户已被删除
12#
发表于 2015-3-25 03:16:40 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
冷月葬花魂 该用户已被删除
13#
发表于 2015-3-27 06:11:01 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
分手快乐 该用户已被删除
14#
发表于 2015-4-3 19:53:08 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
小魔女 该用户已被删除
15#
发表于 2015-4-6 01:51:20 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
飘飘悠悠 该用户已被删除
16#
发表于 2015-4-8 22:17:17 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
兰色精灵 该用户已被删除
17#
发表于 2015-4-10 03:46:53 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
柔情似水 该用户已被删除
18#
发表于 2015-4-10 06:37:24 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
深爱那片海 该用户已被删除
19#
发表于 2015-4-14 13:47:43 | 只看该作者
是一种突破用户端机器环境和CPU
精灵巫婆 该用户已被删除
20#
发表于 2015-4-16 12:18:33 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 07:36

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表