JDBC与JNDI这两种连接方式有什么区别
来源:互联网 发布:java中级工程师周末班 编辑:程序博客网 时间:2024/05/06 00:28
dbc是数据库中间代理商为了是java连接数据库而定的一个协议 或者说是方法,通过jdbc-odbc的方法进行数据库连接,是连接一次创建一次的做法 1,由数据库驱动和协议组成连接数据的方法,调用中间商提供的类包,进行创建连接 2.再由连接去调用3种状态. 3.由状态来提供对数据库的操作 jndi是一种命名树的方式,把需要的类都列成目录的样式,需要哪个只要根据命名直接去 调用,是一种比较快洁的思想和行为. 当你要操作数据库的用jdbc 操作命名服务用jndi Java Database Connectivity (JDBC)是一个标准的Java API,它由一组类和接口组成,Java应用程序开发人员使用它来访问数据库和执行SQL语句 JNDI(Java Name Directory Interface),可不仅仅是进行数据库定位的, 它是给当前应用服务器所管理的所有资源一个唯一的标识,包括数据库,网页,文件, 连接池等等。
配置 JNDI绑定
此处绑定的数据源是以 DBCP 为实现。首先必须将数据库驱动(这里用了MYSQL数据库)和DBCP所需要的 Jar 包复制到 Jetty 根目录的 lib 目录下。DBCP主要需要以下3个文件:
Commons-dbcp.jar
Commons-pool.jar
Commons-collections.jar
jdbc和jndi区别
Connection conn = null;
try{
Class.forName("com.mysql.jdbc.Driver",true,Thread.currentThread().getContextClassLoader());
conn = DriverManager.getConnection("jdbc:mysql://MyDBServer?user=***&password=****");
.....
conn.close();
}
catch(...){...}finally{
if(conn!=null){
try{
}
catch(...){...}
}
}
存在的问题?
1、数据库服务器名称MyDBServer 用户名和口令可能需要修改,由此引发JDBC URL修要修改;
2、数据库可能该用别的产品;
3、随着实际终端的增加,原配置的连接池参数可能需要调整;
解决办法
程序员不必关心数据库级别的事情,只需要知道如何引用即可
JNDI出现了。
定义数据源,也就是JDBC引用参数,给这个数据源设置一个名称;
在程序中通过数据源名称引用数据源,从而访问数据库;
程序员开发时,知道要开发访问MySQL数据库的应用,于是将一个对 MySQL JDBC 驱动程序类的引用进行了编码,并通过使用适当的 JDBC URL 连接到数据库。
Connection conn=null;
try ...{
Class.forName("com.mysql.jdbc.Driver", true, Thread.currentThread().getContextClassLoader());
conn=DriverManager.getConnection("jdbc:mysql://MyDBServer?user=qingfeng&password=mingyue");
......
conn.close();
} catch(Exception e) ...{
e.printStackTrace();
} finally ...{
if(conn!=null) ...{
try ...{
} catch(SQLException e) ...{}
}
}
在JBoss 的 D:\jboss420GA\docs\examples\jca 文件夹下面,有很多不同数据库引用的数据源定义模板。将其中的 mysql-ds.xml 文件Copy到你使用的服务器下,如 D:\jboss420GA\server\default\deploy。
修改 mysql-ds.xml 文件的内容,使之能通过JDBC正确访问你的MySQL数据库,
如下:
Connection conn=null;
try ...{
Class.forName("com.mysql.jdbc.Driver", true, Thread.currentThread().getContextClassLoader());
conn=DriverManager.getConnection("jdbc:mysql://MyDBServer?user=qingfeng&password=mingyue");
......
conn.close();
} catch(Exception e) ...{
e.printStackTrace();
} finally ...{
if(conn!=null) ...{
try ...{
} catch(SQLException e) ...{}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
</local-tx-datasource>
</datasources>
这里,定义了一个名为MySqlDS的数据源,其参数包括JDBC的URL,驱动类名,用户名及密码等。
Connection conn=null;try ...{
Context ctx=new InitialContext();
Object datasourceRef=ctx.lookup("java:MySqlDS"); //引用数据源 DataSource ds=(Datasource)datasourceRef; conn=ds.getConnection();
......
c.close();
} catch(Exception e) ...{
e.printStackTrace();
} finally ...{
if(conn!=null) ...{
try ...{
conn.close();
} catch(SQLException e) ...{ }
}
}
- JDBC与JNDI这两种连接方式有什么区别?
- JDBC与JNDI这两种连接方式有什么区别
- JDBC与JNDI这两种连接方式有什么区别
- JDBC 与 JNDI 这两种连接方式 区别
- JDBC与JNDI这两种连接方式的区别
- jndi是什么呢?原理是什么呢?与jdbc有什么区别呢?
- jndi是什么呢?原理是什么呢?与jdbc有什么区别呢?
- JDBC与JNDI区别
- JDBC与JNDI区别
- JDBC与JNDI区别
- 这两种方式有什么区别
- JDBC与JNDI的区别
- JDBC与JNDI的区别
- JDBC与JNDI的区别
- JDBC与JNDI的区别
- JDBC 与 JNDI的区别
- JNDI与Jdbc的区别
- MDAC是什么?与odbc,jdbc有什么区别???
- 编写程序,键盘输入10个数,并计算平均值,用数组
- Tortoise SVN常见图标含义及图标无法正常解决方法!
- 石子合并问题--圆形版(区间DP)
- 安卓的getX和getRawX的区别
- ViewPager限制左右滑动
- JDBC与JNDI这两种连接方式有什么区别
- ListView的onMeasure总结
- MySQL——视图的创建和使用
- Android画曲线或折线图
- Bootstrap排版中地址与引用详解
- 依赖注入
- 选项卡控制器
- 10.4匿名内部类
- Android应用开发之所有动画使用详解