首先,JDBC直连数据库,也称为数据源,是数据源的一种方式。
其次,我猜测你理解的数据源,可能有2种:
1)连接池框架实现的数据源,譬如C3P0等等
2)应用服务器上配置的数据源,譬如IBM WAS、tomcat上均可以配置JNDI数据源
最后,我简单说明下这2种和JDBC直连的区别:
1)利用连接池框架,数据源连接后,如果不使用,可以暂时放到池中,不关闭连接,而直连是每次创建新的连接,使用完毕后,手工去关闭,下次要使用,再次创建、关闭。连接池框架实现了池的缓存能力后,就无需这样了。
2)在服务器上创建JNDI数据源,这样做的原因是将开发工程师和WAS平台运维工程师的工作区分开,防止数据库连接信息的泄露,保证信息安全。开发工程师无须知道数据库的相关信息,只要在程序中使用JNDI数据源的名称即可。WAS平台工程师在WAS上配置该JNDI数据源。
原理上和网站的一个session差不多,只是session是把key放在cookie里面,数据库连接是把key放在客户端的library的内存里(比如.Net Sql Client)。对MS SQL来说,这个连接的协议叫TDS,底下可以走多种传输层协议,比如tcpip,也可以named pipe。而MySQL就又有自己的协议。当然在拿到key之前,先要走个authentication过程,比如Windows Authentication或者Sql authentication,过了authentication才会产生一个session key。如果是启用SSL的话那么整个连接上的数据流还会被加密,防止信息泄露或者中间人攻击。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)