我想了解JDBC和MySQL DB之间的交互方式。
据我所知,MYSQL服务器是用C / C ++语言编写的。现在我们使用JDBC API与MYSQL DB进行数据库相关的交互。 MYSQL提供了JDBC驱动程序,这些驱动程序被加载到应用程序中。
我相信JDBC驱动程序是用Java编写的(纯Java JDBC驱动程序),那么这个交互如何在Java程序和MYSQL DB(用C编写)之间发生,并假设MYSQL DB在不同的物理服务器上运行。
这是如何工作的?任何人都可以帮我理解这个吗?
答案 0 :(得分:2)
JDBC驱动程序分为四个不同的类别:
类型1: JDBC-ODBC(开放式数据库连接)网桥
对于类型1,JDBC-ODBC桥通过一个或多个ODBC驱动程序提供JDBC API访问。
类型2: Native-API,部分是Java驱动程序
本机API部分支持Java技术的驱动程序将JDBC调用转换为客户端API上的调用
类型3:网络协议,全Java 驱动器
网络协议完全支持Java技术的驱动程序将JDBC API调用转换为独立于DBMS的网络协议,然后由服务器将其转换为DBMS协议。
类型4 :Native-protocol,全Java驱动程序
本机协议完全支持Java技术的驱动程序将JDBC技术调用直接转换为DBMS使用的网络协议。
据我所知(如果我错了,请纠正我)类型3和4是业内最常用的类型,因为它们通常提供更好的性能和可扩展性。
如果您正在寻找有关JDBC驱动程序及其工作方式的更多具体/详细信息,请参阅Oracle's documentation或查看此tutorial,了解如何实际实现JDBC驱动程序自己
答案 1 :(得分:2)
此交互与用于mysql实现或客户端实现的语言无关。这是使用 TCP / IP(传输控制协议/ Internet协议)的纯网络通信,是两个网络主机之间的标准通信语言或协议。
那么这里的jdbc角色在哪里?简单地说,jdbc只创建数据有效负载,它由TCP / IP协议头包装并发送到mysql主机。收到网络请求后,mysql主机解包数据有效负载,将其传递给mysql服务器应用程序,并且由于数据有效负载是由jdbc创建的,mysql服务器可以解析并理解它