在jdbc api中,我们主要处理Connection,DriverManager,Transactions。 JDBC主要用于连接数据库并执行CRUD操作。所以我只需要知道每个步骤在较低级别的JDBC上是如何工作的。
那么当我们DriverManager.getConnection()
发生了什么?它在数据库端创建会话吗?是否创建了交易?什么基本上是连接?
当我们执行语句时,那么数据库往返如何发生?幕后发生了什么?数据如何从java app传递到db,反之亦然?
所以基本上我只需要知道每一步在java端和数据库端发生了什么。
答案 0 :(得分:1)
确切的细节实际上取决于驱动程序和数据库。但总的来说:打开连接是一项相对昂贵的操作,因此您通常希望为多个查询重用相同的连接。还有几种连接池实现(只做一点点搜索)。打开连接通常会建立到DBMS的网络连接(如果有网络连接;也有内存数据库)并对数据库用户进行身份验证。
连接与事务不同,您可以在一个连接中拥有多个事务。
答案 1 :(得分:0)
实际上,JDBC只是一个接口。数据库端发生的情况取决于应用程序中使用的JDBC驱动程序。
答案 2 :(得分:0)
在java中,你主要使用java.sql
包中指定的接口,你经常处理的类是DriverManager
,它允许你获得一个连接(一个允许你访问所有的接口)其他的ResultSet,Statement等)。我尝试概述在使用Oracle数据库时更常见的操作期间会发生什么
DriverManager.getConnection
:它为您提供了一个Connection对象,并在服务器端创建了一个会话(在数据库的v $ session视图中可见)。如果查看documentation,您可以读到创建连接的首选方法是使用可能提供连接池的DataSource
,即创建固定数量的数据库连接(即数据库会话)并重用它们如所须。连接池是使用Oracle数据库时非常受欢迎的功能,因为连接创建很昂贵(Oracle必须创建一个删除进程/线程等),并且有关sql解析(硬和软)的一些数据保留在连接/会话中水平这是一个粗略的概述,因为主题非常广泛,这取决于您需要的细节水平;你可能会遇到非常不同的配置,它们改变了java方面的真实情况。