Heim  >  Artikel  >  Java  >  Ausführliche Erklärung und einfache Beispiele des Java-Datenbankverbindungspools

Ausführliche Erklärung und einfache Beispiele des Java-Datenbankverbindungspools

高洛峰
高洛峰Original
2017-01-11 14:27:101676Durchsuche

Detaillierte Erläuterung des Java-Datenbankverbindungspools

Das Prinzip des Datenbankverbindungspools ist:

Die Grundidee des Verbindungspools besteht darin, die Datenbankverbindung als Objekt im Speicher zu speichern Während der Systeminitialisierung muss der Benutzer auf die Datenbank zugreifen, anstatt eine neue Verbindung herzustellen. Nach der Verwendung schließt der Benutzer die Verbindung nicht, sondern stellt sie für die nächste Anfrage wieder in den Verbindungspool zurück. Der Verbindungsaufbau und -abbau wird vom Verbindungspool selbst verwaltet. Gleichzeitig können Sie auch die anfängliche Anzahl von Verbindungen im Verbindungspool, die Ober- und Untergrenze der Verbindungen, die maximale Anzahl der Verwendungen jeder Verbindung, die maximale Leerlaufzeit usw. steuern, indem Sie die Parameter der Verbindung festlegen Pool. Es kann auch die Anzahl, Nutzung usw. von Datenbankverbindungen über seinen eigenen Verwaltungsmechanismus überwachen.

Häufig verwendete Datenbankverbindungspools:

Zu den häufig verwendeten Datenbankverbindungspools gehören JNDI, C3p0, Apaches Jakarta und DBCPBoneCP. Unter anderem verwendet der Drittanbieter, auf den das Sping-Framework angewiesen ist, c3p0 und dbcp. Bonecp gilt als der schnellste Datenbankverbindungspool. Die in der JNDI-Methode erstellte Datenquelle implementiert tatsächlich javax.sql.datasource (die anderen drei Methoden sind es nicht)

Jetzt stellen wir hauptsächlich vor, wie die JNDI-Methode verwendet wird. Diese Methode wird vom Webserver gesteuert (z. B : tomcat, weblogic, websphere, tomcat), implementiert java.sql.datasource. Der Webserver ist für die Initialisierung der Datenquelle, die Erstellung von Verbindungen, die Zuweisung und die Verwaltung von Verbindungen verantwortlich. Da die Funktion selbst vom Webserver implementiert wird, ist es nicht erforderlich, ein spezielles JAR-Paket in das Projekt einzuführen, sondern es ist erforderlich, bestimmte Konfigurationsdateien des Servers um relevante Konfigurationen zu ergänzen. Nehmen Sie als Nächstes den Tomcat-Server (die Datenbank ist MySQL) als Beispiel, um die Verwendung dieser Methode zu beschreiben.

Daten zur Datenbankerstellung und -initialisierung:

create table test(id INT PRIMARY KEY,name VARCHAR(10),price FLOAT)
 
 
INSERT INTO test VALUES(1,'English',22.2);
 
INSERT INTO test VALUES(2,'Math',78.9);
 
INSERT INTO test VALUES(3,'History',77.9);

1. Legen Sie den Datentreiber mysql-connector-java-5.0.3-bin.jar in die Bibliothek im Tomcat-Verzeichnis ab

2. Ändern Sie die context.xml-Datei unter Tomcats Konfiguration und fügen Sie Unterstützung für die Ressourcenkonfiguration hinzu

<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" maxActive="100" maxIdle="30" maxWait="10000"
 name="jdbc/ewsdb" username="root" password="admin" type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/test1"
/>

afcf87d1fff5333ab4fef00f838e30cc属性说明:

1)description:对所引用的资源的说明。

2)res-ref-name:指定所引用资源的JNDI名字,与41a992d172d4058fa1f494159e00332c元素中的name属性对应。

3)res-type:指定所引用资源的类名,与41a992d172d4058fa1f494159e00332c元素中的type属性对应。

4)res-auth:指定管理所引用资源的Manager,与41a992d172d4058fa1f494159e00332c元素中的auth属性对应

4. 编写使用java代码,并放在tomcat环境下使用,如下

创建JSP范例:MyJsp.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="javax.naming.*" %>
<html>
<head>
<title>Tomcat下JNDI数据库连接池</title>
</head>
<body>
 <%
 try{
 Connection conn;
 Statement stmt;
 ResultSet rs;
 Context ctx = new InitialContext();
 DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/ewsdb");
 conn = ds.getConnection();
 stmt = conn.createStatement();
 //查询记录
 rs = stmt.executeQuery("select ID,NAME,PRICE from test");
 //输出查询结果
 out.println("<table border=1 width=400>");
 while (rs.next()){
  String col1 = rs.getString(1);
  String col2 = rs.getString(2);
  float col3 = rs.getFloat(3);
  //打印显示的数据
  out.println("<tr><td>"+col1+"</td><td>"+col2+"</td><td>"+col3+"</td></tr>");}
  out.println("</table>");
 
 //关闭结果集、SQL声明和数据库连接
 rs.close();
 stmt.close();
 conn.close();
 }catch(Exception e){
 out.println(e.getMessage());
 e.printStackTrace();
 }
 %>
</body>
</html>

 在浏览器中输入http://localhost:8080/test/MyJsp.jsp,即可查看结果

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

更多Java 数据库连接池详解及简单实例相关文章请关注PHP中文网!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn