Java包分类与JNDI、JDBC2.0扩展API详解
创始人
2024-12-31 03:56:57
0 次浏览
0 评论
java的包有哪些
Java包主要有以下几种:
1.Java标准库包
这些包是Java语言的主要组件,包括java.lang包(包括Java语言的主要类,如String、Math等)、java.util包(包含常见的Java工具类,如List、Map等)和java.io包(包含输入输出相关的类,如File、InputStream等)。
2.Java扩展包
Java扩展包是对Java标准库包的补充,包括java.net包(提供网络编程相关的类)、java.sql包(提供数据库相关的类)编程)等这些包提供了更多的功能来满足不同的开发需求。
3.第三方库包
除了Java标准库和扩展包之外,还有很多第三方开发者提供的包,比如多个Spring框架包(spring-core、spring-web、等),几个Apache工具包(例如commons-lang,commons-io等)。
这些包提供了一组丰富的功能和工具,使Java开发变得更加容易。
4.特定领域的包
针对特定的开发领域或应用,也会有相应的Java包。
例如,在Web开发过程中你会使用Servlet和JSP相关的包;在图形界面的开发过程中,将使用AWT和Swing相关的软件包;在科学计算过程中将使用数值计算库。
这些特定领域的包为该领域提供了专门的工具和类,大大提高了开发效率和便利性。
以上是Java包的主要类型。
不同的包提供了不同的功能和工具,开发者可以根据实际需要选择合适的包进行开发。
jndi(java命名与目录接口)api下有哪些常用的包和接口?
JNDI(Java命名和目录接口)分布式计算环境经常使用命名和目录服务来获取共享组件和资源。命名和目录服务将名称与位置、服务、信息和资源相关联。
命名服务提供名称到对象的映射。
目录服务提供有关对象的信息并提供查找这些对象所需的搜索工具。
命名和目录服务的实现有很多种,它们的接口也各不相同。
Java命名和目录接口或JNDI提供了访问不同命名和目录服务的通用接口。
有关支持通过JNDI接口访问命名和目录服务的提供程序列表,请参见URLjava.sun.com/products/jndi/serviceproviders.html。
JNDI(JavaNamingandDirectoryInterface)JNDI在开发企业bean时很重要,因为对EJB的访问是通过JNDI命名服务完成的。
使用命名服务查找与特定名称关联的对象。
在EJB上下文中,命名服务根据Bean的名称查找企业Bean。
因此,了解JNDI对于开发EJB应用程序至关重要。
此外,JDBC可以使用JNDI访问关系数据库。
附件:TutorialJNDIhttp://java.sun.com/products/jndi/tutorial/index.html(下载)http://java.sun.com/products/jndi/docs.html#TUTORIALJDBC2.0扩展API(1)[作者:未知添加日期:2001-8-2414:11:50]来源:www.csdn.netAPIJDBC2.0分为两部分:JDBC2.0核心API和JDBC2.0标准扩展API。
主要API位于java.sql中。
这是原始版本中实现的基本功能。
标准扩展API位于javax.sql中。
JDBC2.0规范最近指定的一些接口在这里。
当然,JDBC2.0也对原始版本的java.sql核心做了一些改变。
但不是很大。
事实证明,JDBC1.0程序无需修改就可以在JDBC2.0上运行。
这是Java一贯的好方法。
最新的JDBC包可以从Sun网站下载。
JDBC2.0扩展API添加了一些用于数据和数据源访问的重要功能。
其中一些主要用于商业计算。
通过新的JDBC2.0扩展包,JDBC提供了从JAVA2平台访问数据的通用方法。
首先,让我们看看JDBC标准扩展API是如何与JDBC2.0集成的。
JDBC2.0包括两个包:1.java.sql包每个包都包含主要的JDBC2.0API。
包括原始JDBCAPI(JDBC1.0版)以及2.0版中的一些新API。
该包包含在Java2PlatformSDK中。
2.javax.sql包,其中包含标准的JDBC2.0API扩展。
该软件包是全新的,单独包含在Java2PlatformSDKEnterpriseEdition中。
主要的JDBC2.0API含了JDBC1.0API,并在此基础上添加了一些功能和性能改进。
Java语言在数据库处理前端提供了统一的数据访问方法,效率也得到了提高。
JDBC是向后兼容的,JDBC1.0的程序无需修改就可以在JDBC2.0上运行。
但是,如果您的程序使用了JDBC2.0的新功能,则必须运行在JDBC2.0版本上。
总之,JDBC核心API的新功能以两种方式发挥作用。
一是支持一些新功能,二是支持SQL3数据类型。
1.在支持新功能方面:包括能够向后滚动结果集并批量更新数据。
此外,还提供了UNICODE字符集的字符流操作。
2.在支持SQL3数据类型方面:包括新的SQL3数据类型,添加持久对象存储。
为了使数据访问和操作更加方便,新的JDBC功能简化了应用程序设计。
例如:数据锁定操作可以显着提高数据库访问性能。
新添加的BLOB、CLOB和数组接口允许应用程序对大数据类型块进行操作,而无需客户端在存储之前执行额外的处理。
这样,内存的使用效率就大大提高了。
我们引入了JDBC2.0标准的扩展API。
标准扩展API分为以下几个方面:1.数据源接口:与Java名称目录服务(JNDI)配合使用的数据源接口。
提供对数恢复指数梅木胃Pepperā?br>;2.连接池:连接可以被重用,而不是为每个请求使用一个新的连接。
3.Distrubutetransaction:一个事务涉及多个数据库服务器。
4.Rowset:JavaBean组件包含结果集,主要用于向瘦客户端传递数据或提供可滚动的结果集。
我们一一介绍一下:1、DataSource接口是一种更好的连接数据源的方式:JDBC1.0最初使用DriverManager类来生成与数据源的连接。
JDBC2.0采用了另一种方法,通过使用DataSource实现,代码变更小、更精致、更容易控制。
DataSource对象代表一个真实的数据源。
根据DataSource实现方法,数据源可以来自关系数据库、电子表格或表格文件。
当DataSource对象注册到名称服务时,应用程序可以通过名称服务获取DataSource对象,并使用它来创建与DataSource代表的数据源的连接。
有关数据源的信息以及如何定位数据源,例如数据库服务器的名称、所在的机器、端口号等,都包含在DataSource对象的属性中。
这样,应用程序设计就更方便,因为不需要将驱动程序名称硬编码到程序中。
通常,驱动程序名称包含驱动程序供应商的名称,这通常在DriverManager类中完成。
如果需要将数据源移动到另一个数据库驱动程序,可以轻松更改代码。
唯一需要的更改是更改相关的数据源属性。
使用DataSource对象的代码不需要任何修改。
DataSource对象必须由系统管理员或具有适当权限的员配置。
配置数据源,包括设置数据源属性,然后将其注册到JNDI名称服务。
在注册DataSource对象的过程中,系统管理员必须将DataSource对象与逻辑名称关联起来。
该名称可以是任意的,但通常选择它以代表数据源并且易于记住。
在以下示例中,名称为:InventoryDB按照约定,逻辑名称通常可在jdbc子上下文中找到。
这种方式逻辑名的全称是:jdbc/InventoryDB。
配置数据源对象后,设计者应用程序可以使用它来创建与数据源的连接。
以下代码片段展示了如何使用JNDI上下文获取数据源对象,以及如何使用数据源对象创建与数据源的连接。
前两行使用JNDIAPI,第三行使用JDBCAPI:Contextctx=newInitialContext();DataSourceds=(DataSource)ctx.lookup("jdbc/InventoryDB");Connectioncon=ds.getConnection("myPassword","myUserName");在基本DataSource实现中,DataSource.getConnection方法返回的Connection对象与DriverManager.getConnection方法返回的Connection对象相同。
为了使用DataSource的方便,我们推荐使用DataSource对象来获取Connection对象。
我们希望所有基于JDBC2.0技术的数据库驱动程序都包含一个核心的DataSource实现,以便可以在应用程序中轻松使用。
对于普通应用程序的设计者来说,是否使用DataSource对象只是一个选择问题。
然而,需要使用连接池或分布式事务的应用程序设计者必须使用DataSource对象来获取Connection,原因我们将在下面提到。
2.连接池:连接池是一种机制,当应用程序关闭连接时,连接会被回收而不是被销毁,因为建立连接是一个资源密集型操作。
如果回收的连接能够被重用,那么创建的新连接的数量将会减少,操作的性能将会得到显着的提高。
假设应用程序需要建立与名为EmpolyeeDB的数据源的连接。
使用连接池获取连接的代码如下:Contextctx=newInitialContext();DataSourceds=(DataSource)ctx.lookup("jdbc/EmployeeDB");Connectioncon=ds.getConnection("myPassword","myUserName");除了逻辑名之外,我们发现代码和上面例子中的代码是一样的。
不同的逻辑名称可以链接到不同的数据库。
DataSource对象的getConnection方法返回的连接是否是连接池中的连接完全取决于DataSource对象的实现方法。
如果DataSource对象被实现为与支持连接池的中间层服务器一起工作,则DataSource对象将自动返回连接池中的连接,并且该连接也可以被重用。
无论您是否使用连接池来获取连接,对您的应用程序代码都没有影响。
使用此连接没有什么不同。
唯一的区别是连接在Java的最后一个语句块中关闭。
永久关闭连接是良好的编程习惯。
这样,即使方法抛出异常,Connection也会被关闭并回收到连接池中。
你的代码应该是这样的:try{...}catch(){...}finally{if(con!=null)con.close();}3.分布式事务:获取连接并捕获以支持分布式事务连接中的连接池非常相似。
同样,区别在于数据源的实现,而不是应用程序中如何实现连接。
假设DataSource实现可以与支持分布式事务的中间层服务器配合使用,获取连接的代码仍然如下:Contextctx=newInitialContext();DataSourceds=(DataSource)ctx.lookup("jdbc/EmployeeDB");连接con=ds.getConnection("myPassword","myUserName");出于性能考虑,如果一个DataSource可以支持分布式事务,那么它也可以支持连接池管理。
从应用程序设计者的角度来看。
连接是否支持分布式事务没有区别。
唯一的区别在于,在事务边界(事务发起的地方和终止的地方),事务的发起或终止是由决定的。
交易服务器。
应用程序不应执行任何可能妨碍服务的操作。
应用程序不能直接调用事务提交或回滚操作,也不能使用自动事务提交模式(当数据库操作完成时自动调用提交或回滚)。
当连接参与分布式事务时,无法执行以下代码(with表示支持分布式事务的连接)。
con.commit();或con.rollback();或con.setAutoCommit(true);对于正常连接,默认为自动提交模式。
对于支持分布式事务的连接,默认不是自动提交模式。
请注意,虽然Connection支持事务,但也可以在没有事务的情况下使用。
事务边界限制仅适用于分布式事务。
配置支持连接池的DataSource时,必须配置ConnectionPoolDataSource对象。
该对象是三层架构中的中间层,用于管理连接池。
同样,当配置支持分布式事务时,需要配置XADataSource是中间层用来管理分布式事务的对象。
ConnectionPoolDataSource和XADataSource由驱动程序提供商提供,对应用程序设计者来说是透明的。
与基本数据源一样,系统管理员配置ConnectionPoolDataSource和XADataSource对象。
4.结果集:结果集对象是数据行的容器。
根据目的,可以通过多种方式来实现。
RowSet及其接口与标准JDBC2.0扩展API略有不同。
它们不是驱动程序的一部分。
RowSet在驱动程序的顶层实现,并且可以由任何其他人实现。
任何行集类型都实现RowSet接口,该接口扩展了ResultSet接口。
这样,RowSet对象就拥有了ResultSet对象的一些功能。
您可以通过getXXX方法获取数据库中特定列的值。
您可以通过updateXXX方法更改给定列的值。
您可以移动光标将当前行更改为另一行。
自然,我们更感兴趣的是RowSet接口提供的新功能。
作为一个JavaBean组件,RowSet对象可以添加或删除监听器,并且可以获取或设置属性值。
这些属性之一是字符串,它表示对数据库的查询请求。
RowSet接口定义了设置参数的方法,也提供了执行此请求的方法。
这意味着RowSet对象可以发出查询请求并根据其生成的结果集执行计算。
同样,RowSet可以针对任何表格数据源进行计算,因此它不限于关系数据库。
从数据源获取数据后,可以将RowSet对象与数据源分离,并且还可以序列化行集。
这样,RowSet就可以是通过网络传递到瘦客户端。
RowSet可以重新连接到数据源,以便所做的更改可以保存回数据源。
如果生成侦听器,则当RowSet的当前行发生移动或数据发生变化时,侦听器将收到通知。
例如,图形用户界面组件可以注册为侦听器,当RowSet更改时,图形用户界面会收到通知,并且可以修改界面以符合其表示的RowSet。
根据不同的需求,RowSet接口可以有多种实现方式。
Javasoftware编写了一个CachedRowSet实现,可以从http://developer.java.sun.com/developer/earlyAccess/crs/index.html获得。
与CachedRowSet类不同,JDBCRowSet类始终维护与数据源的连接。
这就像向ResultSet添加外部层一样简单。
基于JDBC技术的驱动程序表现为一个简单的JavaBean组件。
摘要:JDBC2.0标准扩展API通过DataSource向JNDI名称服务注册,将JDBC技术扩展为一个全新的概念。
使应用程序代码更加紧凑,更易于控制。
新的API支持连接池和分布式事务。
最后,它还允许Java应用程序通过网络传播结果集,将不可滚动的ResultSet转换为可滚动的RowSet。
相关文章
深入解析虚拟机运行原理与资源优化
2025-01-12 17:05:40JavaMail API详解:电子消息发...
2024-12-26 03:38:24北京Java培训机构:学费、就业前景及学...
2024-12-24 16:09:03PHP连接MySQL数据库教程:使用My...
2024-12-21 05:40:45C语言编程挑战:求解特定范围内数字问题及...
2025-01-12 13:03:33Java编程入门指南:从基础到高级技术详...
2024-12-31 03:50:21Java培训费用解析:线上线下价格差异及...
2024-12-31 20:40:40字符串转换攻略:轻松实现Map到Pers...
2024-12-14 21:47:18Java免费工具盘点:从Java18到开...
2025-01-13 01:44:43Java基础:深入浅出类与对象的理解与实...
2024-12-15 11:43:39最新文章
13
2025-01
13
2025-01
13
2025-01
13
2025-01
13
2025-01
13
2025-01
13
2025-01
13
2025-01
13
2025-01
13
2025-01
热门文章
1
Java字符串分割技巧:轻松获取逗号前的...
java任意一个字符串,当它碰到第一个逗号时,返回逗号前面的字符串,例如:str...
2
SQL多表连接查询全解析:JOIN语句应...
sql多表关联查询在执行SQL多表连接查询时,可以使用JOIN语句将多个表连接在...
3
Java中字符串类型详解:String与...
变量有字符类型,为什么没有字符串类型??基本类型:charshort、int、l...
4
JavaSE与JavaEE:从基础到企业...
javase 和javaee的区别?JavaSE和JavaEE...
5
Java程序员面试必知:核心技术问答与技...
java编程程序员技术面试常见面试?随着互联网的不断发展,Java开发已经成为很...
6
Java.exe与Javaw.exe:区...
程序中java和javaw有什么区别java和javaw的区别:两者都是Java...
7
深入解析:Java中的javax包及其与...
JAVA导入时,什么是javax?awt是java1.0,swing是java2...
8
Java包基础:命名空间与代码组织指南
java中的包是什么意思?包是Java中组织代码的基本结构。这种结构可以帮助我们...
9
Java AWT与Swing:全面解析二...
java.awt和javax.swing有什么区别AWT是AbstractWin...
10
Java字符串比较:如何检测子字符串在另...
java怎样判断一个字符串中的某个字符或字符串包含于另一个字符串publiccl...