|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
先说优点,首先和C,C++这些语言比起来,java很简单,去掉指针的java,非常好理解,自动垃圾回收机制也很好,自从JDK1.5推出以后,性能上又有了很大提高。
Spring供应的JDBC笼统框架由core,datasource,object和support四个分歧的包构成。
就和它名字的表示一样,org.springframework.jdbc.core包里界说了供应中心功效的类。个中有各类SQLExceptionTranslator和DataFieldMaxValueIncrementer的完成和一个用于JdbcTemplate的DAO基本类。
org.springframework.jdbc.datasource包里有一个用以简化数据源会见的工具类,和各类数据源的复杂完成,以被用来在J2EE容器以外不经修正地测试JDBC代码。这个工具类供应了从JNDI取得毗连和大概用到的封闭毗连的静态办法。它撑持绑定线程的毗连,好比被用于DataSourceTransactionManager。
接着,org.springframework.jdbc.object包里是把干系数据库的查询,更新和存储历程封装为线程平安并可重用对象的类。这中体例摹拟了JDO,只管查询前往的对象天经地义的“离开”了数据库毗连。这个JDBC的高层笼统依附于org.springframework.jdbc.core包中所完成的底层笼统。
最初在org.springframework.jdbc.support包中你能够找到SQLException的转换功效和一些工具类。
在JDBC挪用中被抛出的非常会被转换成在界说org.springframework.dao包中的非常。这意味着利用SpringJDBC笼统层的代码不必要完成JDBC大概RDBMS特定的毛病处置。一切的转换后的非常都是unchecked,它同意你捕获那些你能够恢复的非常,并将其他的非常传送给挪用者。
JdbcTemplate
这是在JDBC中心包中最主要的类。它简化了JDBC的利用,由于它处置了资本的创建和开释。它匡助你制止一些罕见的毛病,好比忘了总要封闭毗连。它运转中心的JDBC事情流,如Statement的创建和实行,而只必要使用程序代码供应SQL和提取了局。这个类实行SQL查询,更新大概挪用存储历程,摹拟了局集的迭代和提取前往参数值。它还捕获JDBC的非常并将它们转换成org.springframework.dao包中界说的通用的,可以供应更多信息的非常系统。
利用这个类的代码只必要依据明白界说的一组左券来完成回调接口。PreparedStatementCreator回调接口创立一个由该类供应的毗连所创建的PreparedStatement,并供应SQL和任何须要的参数。CallableStatementCreateor完成一样的处置,只是它创立了CallableStatement。RowCallbackHandler接口从数据集的每行中提取值。
这个类能够间接经由过程数据源的援用实例化,然后在服务中利用,也能够在ApplicationContext中发生并作为bean的援用给服务利用。注重:数据源应该老是作为一个bean在ApplicationContext中设置,第一种情形它被间接传送给服务,第二种情形给JdbcTemplate。由于这个类把回调接口和SQLExceptionTranslator接口作为参数暗示,以是没有需要为它界说子类。这个类实行的一切SQL城市被记进日记。
数据源
为了从数据库取得数据,我们必要失掉数据库的毗连。Spring接纳的办法是经由过程一个数据源。数据源是JDBC标准的一部分,它能够被以为是一个通用的毗连工场。它同意容器大概框架将在使用程序代码中埋没毗连池和事件的办理操纵。开辟者将不必要晓得毗连数据库的任何细节,那是设置数据源的办理员的义务。固然你极可能在开辟大概测试的时分必要兼任两种脚色,可是你其实不必要晓得实践产物中的数据源是怎样设置的。
利用Spring的JDBC层,你能够从JNDI失掉一个数据源,也能够经由过程利用Spring刊行版供应的完成本人设置它。后者关于离开Web容器的单位测试是非常便当的。我们将在本节中利用DriverManagerDataSource完成,固然今后还会提到其他的一些的完成。DriverManagerDataSource和传统的体例一样猎取JDBC毗连。为了让DriverManager能够装载驱动类,你必需指定JDBC驱动完全的类名。然后你必需供应相对各类JDBC驱动的分歧的URL。你必需参考你所用的驱动的文档,以取得必要利用的准确参数。最初,你还必需供应用来毗连数据库的用户名和暗码上面这个例子申明怎样设置DriverManagerDataSource:
DriverManagerDataSourcedataSource=newDriverManagerDataSource();
dataSource.setDriverClassName("org.hsqldb.jdbcDriver");
dataSource.setUrl("jdbc:hsqldb:hsql://localhost:");
dataSource.setUsername("sa");
dataSource.setPassword("");
10.2.3.SQLExceptionTranslator
SQLExceptionTranslator是一个必要完成的接口,它被用来处置SQLException和我们的数据会见非常org.springframework.dao.DataAccessException之间的转换。
完成能够是通用的(好比利用JDBC的SQLState值),也能够为了更高的准确度特别化(好比利用Oracle的ErrorCode)。
SQLErrorCodeSQLExceptionTranslator是SQLExceptionTranslator的完成,它被默许利用。比供给商指定的SQLState更加准确。ErrorCode的转换是基于被保留在SQLErrorCodes型的JavaBean中的值。这个类是由SQLErrorCodesFactory创建并添补的,就像它的名字申明的,SQLErrorCodesFactory是一个基于一个名为"sql-error-codes.xml"的设置文件的内容创建SQLErrorCodes的工场。这个文件带有供给商的码一同公布,而且是基于DatabaseMetaData信息中的DatabaseProductName,合适以后数据库的码会被利用。
<p>
java主要分三块,j2se:java的基础核心语言。j2me:java的微型模块,专门针对内存小,没有持续电源等小型设备。j2ee:java的企业模块,专门针对企业数据库服务器的连接维护。 |
|