{"id":50673,"date":"2022-12-16T18:58:25","date_gmt":"2023-01-14T06:16:01","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/java%e4%b8%ad%e7%9a%84%e8%bf%9e%e6%8e%a5%e6%b1%a0%e7%ae%a1%e7%90%86\/"},"modified":"2024-04-29T05:36:32","modified_gmt":"2024-04-28T21:36:32","slug":"java%e4%b8%ad%e7%9a%84%e8%bf%9e%e6%8e%a5%e6%b1%a0%e7%ae%a1%e7%90%86","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/java%e4%b8%ad%e7%9a%84%e8%bf%9e%e6%8e%a5%e6%b1%a0%e7%ae%a1%e7%90%86\/","title":{"rendered":"Java\u4e2d\u7684\u8fde\u63a5\u6c60\u7ba1\u7406"},"content":{"rendered":"<p>\u8fde\u63a5\u6c60\u610f\u5473\u7740\u4e00\u7ec4\u8fde\u63a5\u5bf9\u8c61\u3002\u8fde\u63a5\u6c60\u57fa\u4e8e\u5bf9\u8c61\u6c60\u8bbe\u8ba1\u6a21\u5f0f\u3002\u5f53\u521b\u5efa\u65b0\u5bf9\u8c61\u7684\u6210\u672c\uff08\u65f6\u95f4\u548c\u8d44\u6e90\uff0c\u5982CPU\u3001\u7f51\u7edc\u548cIO\uff09\u8f83\u9ad8\u65f6\uff0c\u4f7f\u7528\u5bf9\u8c61\u6c60\u8bbe\u8ba1\u6a21\u5f0f\u3002\u6839\u636e\u5bf9\u8c61\u6c60\u8bbe\u8ba1\u6a21\u5f0f\uff0c\u5e94\u7528\u7a0b\u5e8f\u9884\u5148\u521b\u5efa\u5bf9\u8c61\u5e76\u5c06\u5b83\u4eec\u653e\u5165\u6c60\u6216\u5bb9\u5668\u4e2d\u3002\u5f53\u5e94\u7528\u7a0b\u5e8f\u9700\u8981\u8fd9\u4e9b\u5bf9\u8c61\u65f6\uff0c\u5b83\u4ece\u6c60\u4e2d\u83b7\u53d6\u800c\u4e0d\u662f\u521b\u5efa\u4e00\u4e2a\u65b0\u5bf9\u8c61\u3002<\/p>\n<p>\u4f7f\u7528\u8fde\u63a5\u6c60\u7b56\u7565\u7684\u5e94\u7528\u7a0b\u5e8f\u5df2\u7ecf\u5177\u6709\u53ef\u4ee5\u91cd\u590d\u4f7f\u7528\u7684\u6570\u636e\u5e93\u8fde\u63a5\u5bf9\u8c61\u3002\u56e0\u6b64\uff0c\u5f53\u9700\u8981\u4e0e\u6570\u636e\u5e93\u4ea4\u4e92\u65f6\uff0c\u5e94\u7528\u7a0b\u5e8f\u4ece\u8fde\u63a5\u6c60\u4e2d\u83b7\u53d6\u8fde\u63a5\u5b9e\u4f8b\u3002\u8fde\u63a5\u6c60\u63d0\u9ad8\u4e86\u4e0e\u6570\u636e\u5e93\u4ea4\u4e92\u7684\u5e94\u7528\u7a0b\u5e8f\u6027\u80fd\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/6564859ca4b2f92e6c730acb\/2-0.png\" alt=\"Connection Pooling\" \/><\/div>\n<p>\u6211\u4eec\u53ef\u4ee5\u81ea\u5df1\u5b9e\u73b0\u8fde\u63a5\u6c60\u3002\u4efb\u4f55\u8fde\u63a5\u6c60\u6846\u67b6\u90fd\u9700\u8981\u5b8c\u6210\u4e09\u9879\u4efb\u52a1\u3002<\/p>\n<ul class=\"post-ul\">\n<li>Creating Connection Objects<\/li>\n<li>Manage usage of created Objects and validate them<\/li>\n<li>Release\/Destroy Objects<\/li>\n<\/ul>\n<p>\u4f7f\u7528Java\uff0c\u6211\u4eec\u6709\u4e00\u7cfb\u5217\u975e\u5e38\u597d\u7528\u7684\u5e93\u53ef\u4f9b\u4f7f\u7528\u3002\u6211\u4eec\u53ea\u9700\u8981\u914d\u7f6e\u4e00\u4e9b\u5c5e\u6027\u5c31\u53ef\u4ee5\u4f7f\u7528\u5b83\u4eec\u4e86\u3002<\/p>\n<h2>\u5728 Java \u5e94\u7528\u7a0b\u5e8f\u4e2d\u7684\u8fde\u63a5\u6c60<\/h2>\n<p>\u8ba9\u6211\u4eec\u6765\u770b\u770b\u4e0b\u9762\u7684\u56fe\u4e66\u9986\u5427\u3002 de ba.)<\/p>\n<ul class=\"post-ul\">\n<li>Apache Commons DBCP 2<\/li>\n<li>HikariCP<\/li>\n<li>C3P0<\/li>\n<\/ul>\n<p>\u8ba9\u6211\u4eec\u9010\u4e2a\u770b\u4e00\u4e0b\u4ee5\u4e0b\u7684\u4f8b\u5b50\u3002\u4e3a\u4e86\u6f14\u793a\u7684\u76ee\u7684\uff0c\u6211\u4eec\u5c06\u4f7f\u7528MySQL\u6570\u636e\u5e93\u548cEclipse\u96c6\u6210\u5f00\u53d1\u73af\u5883\u3002\u6211\u4eec\u8fd8\u5c06\u57fa\u4e8eMaven\u521b\u5efa\u4e00\u4e2a\u7b80\u5355\u7684Java\u9879\u76ee\uff0c\u4f7f\u7528JDK 1.8\u3002<\/p>\n<h2>\u6570\u636e\u5e93\u811a\u672c<\/h2>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">create<\/span> <span class=\"token keyword\">database<\/span> empdb<span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token keyword\">use<\/span> empdb<span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token keyword\">create<\/span> <span class=\"token keyword\">table<\/span> tblemployee<span class=\"token punctuation\">(<\/span>\r\n                    empId <span class=\"token keyword\">integer<\/span> <span class=\"token keyword\">AUTO_INCREMENT<\/span> <span class=\"token keyword\">primary<\/span> <span class=\"token keyword\">key<\/span><span class=\"token punctuation\">,<\/span>\r\n                    empName <span class=\"token keyword\">varchar<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">64<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\r\n                    dob <span class=\"token keyword\">date<\/span><span class=\"token punctuation\">,<\/span>\r\n                    designation <span class=\"token keyword\">varchar<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">64<\/span><span class=\"token punctuation\">)<\/span>\r\n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token keyword\">insert<\/span> <span class=\"token keyword\">into<\/span>  tblemployee<span class=\"token punctuation\">(<\/span>empId<span class=\"token punctuation\">,<\/span>empName<span class=\"token punctuation\">,<\/span>dob<span class=\"token punctuation\">,<\/span>designation<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">values<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">default<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">'Adam'<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">'1998-08-15'<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">'Manager'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">insert<\/span> <span class=\"token keyword\">into<\/span>  tblemployee<span class=\"token punctuation\">(<\/span>empId<span class=\"token punctuation\">,<\/span>empName<span class=\"token punctuation\">,<\/span>dob<span class=\"token punctuation\">,<\/span>designation<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">values<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">default<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">'Smith'<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">'2001-01-11'<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">'Clerk'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">insert<\/span> <span class=\"token keyword\">into<\/span>  tblemployee<span class=\"token punctuation\">(<\/span>empId<span class=\"token punctuation\">,<\/span>empName<span class=\"token punctuation\">,<\/span>dob<span class=\"token punctuation\">,<\/span>designation<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">values<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">default<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">'James'<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">'1996-03-13'<\/span><span class=\"token punctuation\">,<\/span><span class=\"token string\">'Officer'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n<\/code><\/pre>\n<h2>\u793a\u4f8b\u9879\u76ee<\/h2>\n<p>\u6309\u7167\u4ee5\u4e0b\u6b65\u9aa4\u6765\u521b\u5efa\u65b0\u9879\u76ee\u3002<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u6253\u5f00Eclipse IDE\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>\u70b9\u51fb\u6587\u4ef6\u83dc\u5355\uff0c\u9009\u62e9\u65b0\u5efa -&gt; Maven\u9879\u76ee\u3002<\/p>\n<p>\u4e0b\u65b9\u5c4f\u5e55\u5c06\u4f1a\u663e\u793a\u3002\u9009\u62e9\u521b\u5efa\u4e00\u4e2a\u7b80\u5355\u9879\u76ee\u9009\u9879\uff0c\u7136\u540e\u70b9\u51fb\u4e0b\u4e00\u6b65\u6309\u94ae\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/6564859ca4b2f92e6c730acb\/15-0.png\" alt=\"New Maven Project\" \/><\/div>\n<ol>\u8bf7\u8f93\u5165\u4efb\u4f55\u7fa4\u7ec4ID\u3001\u4f9d\u8d56ID\u3001\u540d\u79f0\u4ee5\u53ca\u63cf\u8ff0\u3002<\/ol>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/6564859ca4b2f92e6c730acb\/17-0.png\" alt=\"Maven Project Configs\" \/><\/div>\n<p>\u70b9\u51fb\u201c\u5b8c\u6210\u201d\u6309\u94ae\u3002<\/p>\n<ol>\u5728\u60a8\u7684pom.xml\u4e2d\u6dfb\u52a0\u4ee5\u4e0b\u4f9d\u8d56\u9879\u4ee5\u652f\u6301MySQL\u3002<\/ol>\n<pre class=\"post-pre\"><code><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>dependency<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>groupId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>mysql<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>groupId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>artifactId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>mysql-connector-java<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>artifactId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>version<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>5.1.49<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>version<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>dependency<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<\/code><\/pre>\n<ol>\u5728\u9879\u76ee\u4e0a\u70b9\u51fb\u53f3\u952e\uff0c\u9009\u62e9Maven -&gt; \u66f4\u65b0\u9879\u76ee -&gt; \u786e\u5b9a\u3002\u5b83\u5c06\u4e0b\u8f7d\u6240\u6709\u4f9d\u8d56\u9879\u3002<\/ol>\n<h3>1) Apache commons DBCP 2 \u7ea6\u7537\u5df4\u80c6\u4ea5\u6787<\/h3>\n<p>DBCP\u6765\u81ea\u4e8eApache Common\u9879\u76ee\u3002DBCP 2.7\u9700\u8981Java 8\u3002\u8981\u4f7f\u7528DBCP 2\uff0c\u5728\u60a8\u7684\u9879\u76ee\u4e2d\u9700\u8981\u6dfb\u52a0\u4ee5\u4e0b\u4f9d\u8d56\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>dependency<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>groupId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>org.apache.commons<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>groupId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>artifactId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>commons-dbcp2<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>artifactId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>version<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>2.7.0<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>version<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>dependency<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<\/code><\/pre>\n<p>Apache DBCP 2.0\u63d0\u4f9b\u4e86\u4e24\u79cd\u7c7b\u578b\u7684\u6570\u636e\u6e90\uff08BasicDataSource\u548cPoolingDataSource\uff09\u3002<\/p>\n<p>Apache DBCP 2.0\u63d0\u4f9b\u4e86\u4e24\u79cd\u6570\u636e\u6e90\u7c7b\u578b\uff0c\u5206\u522b\u662fBasicDataSource\u548cPoolingDataSource\u3002<\/p>\n<p>BasicDataSource: \u6b63\u5982\u5176\u540d\u79f0\u6240\u793a\uff0c\u5b83\u7b80\u5355\u4e14\u9002\u7528\u4e8e\u5927\u591a\u6570\u5e38\u89c1\u7684\u7528\u4f8b\u3002\u5b83\u5728\u5185\u90e8\u4e3a\u6211\u4eec\u521b\u5efa\u4e86PoolingDataSource\u3002<\/p>\n<p>\u8ba9\u6211\u4eec\u6765\u770b\u4e00\u4e0b\u521d\u59cb\u5316\u8fde\u63a5\u6c60\u7684\u6b65\u9aa4\u3002<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u521b\u5efa\u4e00\u4e2aBasicDataSource\u7684\u5b9e\u4f8b\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u6307\u5b9aJDBC URL\u3001\u6570\u636e\u5e93\u7528\u6237\u540d\u548c\u5bc6\u7801\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u6307\u5b9a\u6700\u5c0f\u7a7a\u95f2\u8fde\u63a5\u6570\uff08\u6c60\u4e2d\u5fc5\u987b\u4fdd\u6301\u7684\u6700\u5c0f\u8fde\u63a5\u6570\uff09\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u6307\u5b9a\u6700\u5927\u7a7a\u95f2\u8fde\u63a5\u6570\uff08\u6c60\u4e2d\u5141\u8bb8\u7684\u6700\u5927\u7a7a\u95f2\u8fde\u63a5\u6570\uff09\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\u6307\u5b9a\u6700\u5927\u8fde\u63a5\u603b\u6570\u3002<\/ol>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">package<\/span> <span class=\"token namespace\">com<span class=\"token punctuation\">.<\/span>journaldev<span class=\"token punctuation\">.<\/span>example<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token comment\">\/**\r\n * Java JDBC Connection pool using Apache commons DBCP2 example program\r\n * \r\n * @author pankaj\r\n *\/<\/span>\r\n\r\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>sql<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">Connection<\/span><\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>sql<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">ResultSet<\/span><\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>sql<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">SQLException<\/span><\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>sql<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">Statement<\/span><\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">org<span class=\"token punctuation\">.<\/span>apache<span class=\"token punctuation\">.<\/span>commons<span class=\"token punctuation\">.<\/span>dbcp2<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">BasicDataSource<\/span><\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">DBCP2Demo<\/span> <span class=\"token punctuation\">{<\/span>\r\n\r\n\t<span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token class-name\">BasicDataSource<\/span> dataSource <span class=\"token operator\">=<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n\t<span class=\"token keyword\">static<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\tdataSource <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">BasicDataSource<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\tdataSource<span class=\"token punctuation\">.<\/span><span class=\"token function\">setUrl<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"jdbc:mysql:\/\/localhost:3306\/empdb?useSSL=false\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\tdataSource<span class=\"token punctuation\">.<\/span><span class=\"token function\">setUsername<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"root\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\tdataSource<span class=\"token punctuation\">.<\/span><span class=\"token function\">setPassword<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"root\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n\t\tdataSource<span class=\"token punctuation\">.<\/span><span class=\"token function\">setMinIdle<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\tdataSource<span class=\"token punctuation\">.<\/span><span class=\"token function\">setMaxIdle<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\tdataSource<span class=\"token punctuation\">.<\/span><span class=\"token function\">setMaxTotal<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">25<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n\t<span class=\"token punctuation\">}<\/span>\r\n\r\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> args<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">throws<\/span> <span class=\"token class-name\">SQLException<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t<span class=\"token class-name\">Connection<\/span> connection <span class=\"token operator\">=<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token class-name\">Statement<\/span> statement <span class=\"token operator\">=<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token class-name\">ResultSet<\/span> resultSet <span class=\"token operator\">=<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t\tconnection <span class=\"token operator\">=<\/span> dataSource<span class=\"token punctuation\">.<\/span><span class=\"token function\">getConnection<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\tstatement <span class=\"token operator\">=<\/span> connection<span class=\"token punctuation\">.<\/span><span class=\"token function\">createStatement<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\tresultSet <span class=\"token operator\">=<\/span> statement<span class=\"token punctuation\">.<\/span><span class=\"token function\">executeQuery<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"select * from tblemployee\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\t<span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>resultSet<span class=\"token punctuation\">.<\/span><span class=\"token function\">next<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t\t\t<span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"empId:\"<\/span> <span class=\"token operator\">+<\/span> resultSet<span class=\"token punctuation\">.<\/span><span class=\"token function\">getInt<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"empId\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\t\t<span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"empName:\"<\/span> <span class=\"token operator\">+<\/span> resultSet<span class=\"token punctuation\">.<\/span><span class=\"token function\">getString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"empName\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\t\t<span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"dob:\"<\/span> <span class=\"token operator\">+<\/span> resultSet<span class=\"token punctuation\">.<\/span><span class=\"token function\">getDate<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"dob\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\t\t<span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"designation:\"<\/span> <span class=\"token operator\">+<\/span> resultSet<span class=\"token punctuation\">.<\/span><span class=\"token function\">getString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"designation\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\t<span class=\"token punctuation\">}<\/span>\r\n\t\t<span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">finally<\/span> <span class=\"token punctuation\">{<\/span>\r\n\r\n\t\t\tresultSet<span class=\"token punctuation\">.<\/span><span class=\"token function\">close<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\tstatement<span class=\"token punctuation\">.<\/span><span class=\"token function\">close<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\tconnection<span class=\"token punctuation\">.<\/span><span class=\"token function\">close<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token punctuation\">}<\/span>\r\n\t<span class=\"token punctuation\">}<\/span>\r\n\r\n<span class=\"token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<p>\u8f93\u51fa\uff1a<\/p>\n<pre class=\"post-pre\"><code>empId:1\r\nempName:Adam\r\ndob:1998-08-15\r\ndesignation:Manager\r\nempId:2\r\nempName:Smith\r\ndob:2001-01-11\r\ndesignation:Clerk\r\nempId:3\r\nempName:James\r\ndob:1996-03-13\r\ndesignation:Officer\r\n<\/code><\/pre>\n<p>PoolingDataSource\uff1a\u5b83\u63d0\u4f9b\u66f4\u591a\u7684\u7075\u6d3b\u6027\u3002\u60a8\u53ea\u9700\u66f4\u6539\u521b\u5efa\u6570\u636e\u6e90\u7684\u4ee3\u7801\u5373\u53ef\uff0c\u5176\u4f59\u7684\u4ee3\u7801\u5c06\u4fdd\u6301\u4e0d\u53d8\u3002<\/p>\n<p>\u8ba9\u6211\u4eec\u6765\u770b\u4e00\u4e0b\u521d\u59cb\u5316\u8fde\u63a5\u6c60\u7684\u6b65\u9aa4\uff1a<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u4f7f\u7528JDBC URL\u521b\u5efa\u4e00\u4e2aConnectionFactory\u5b9e\u4f8b\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u4f7f\u7528\u5728\u7b2c1\u6b65\u4e2d\u521b\u5efa\u7684ConnectionFactory\u5b9e\u4f8b\u521b\u5efa\u4e00\u4e2aPoolableConnectionFactory\u5b9e\u4f8b\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u521b\u5efa\u4e00\u4e2aGenericObjectPoolConfig\u5b9e\u4f8b\u5e76\u8bbe\u7f6e\u6700\u5927\u95f2\u7f6e\u3001\u6700\u5c0f\u95f2\u7f6e\u548c\u6700\u5927\u8fde\u63a5\u5c5e\u6027\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u73b0\u5728\u4f7f\u7528\u7b2c2\u6b65\u548c\u7b2c3\u6b65\u4e2d\u521b\u5efa\u7684\u5b9e\u4f8b\u521d\u59cb\u5316ObjectPool\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u73b0\u5728\u5c06pool\u8bbe\u7f6e\u4e3aPoolableConnectionFactory\u7684\u4e00\u4e2a\u5b9e\u4f8b\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\u6700\u540e\uff0c\u521d\u59cb\u5316\u4e00\u4e2aDataSource\u5b9e\u4f8b\u3002<\/ol>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token class-name\">DataSource<\/span> dataSource <span class=\"token operator\">=<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n\t<span class=\"token keyword\">static<\/span> <span class=\"token punctuation\">{<\/span>\r\n\r\n\t\t<span class=\"token class-name\">Properties<\/span> properties <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Properties<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\tproperties<span class=\"token punctuation\">.<\/span><span class=\"token function\">setProperty<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"user\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"root\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\tproperties<span class=\"token punctuation\">.<\/span><span class=\"token function\">setProperty<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"password\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"root\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n\t\t<span class=\"token class-name\">ConnectionFactory<\/span> connectionFactory <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">DriverManagerConnectionFactory<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"jdbc:mysql:\/\/localhost:3306\/empdb\"<\/span><span class=\"token punctuation\">,<\/span>\r\n\t\t\t\tproperties<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n\t\t<span class=\"token class-name\">PoolableConnectionFactory<\/span> poolableConnectionFactory <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">PoolableConnectionFactory<\/span><span class=\"token punctuation\">(<\/span>connectionFactory<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n\t\t<span class=\"token class-name\">GenericObjectPoolConfig<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">PoolableConnection<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> config <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">GenericObjectPoolConfig<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\tconfig<span class=\"token punctuation\">.<\/span><span class=\"token function\">setMaxTotal<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">25<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\tconfig<span class=\"token punctuation\">.<\/span><span class=\"token function\">setMaxIdle<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\tconfig<span class=\"token punctuation\">.<\/span><span class=\"token function\">setMinIdle<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n\t\t<span class=\"token class-name\">ObjectPool<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">PoolableConnection<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> connectionPool <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">GenericObjectPool<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span>poolableConnectionFactory<span class=\"token punctuation\">,<\/span> config<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\tpoolableConnectionFactory<span class=\"token punctuation\">.<\/span><span class=\"token function\">setPool<\/span><span class=\"token punctuation\">(<\/span>connectionPool<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n\t\tdataSource <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">PoolingDataSource<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span>connectionPool<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n\t<span class=\"token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<h3>2\uff09HikariCP\u7684\u91ca\u4e49\u662f\u4ec0\u4e48\uff1f<\/h3>\n<p>HikariCP\u5feb\u901f\u3001\u53ef\u9760\u3001\u7b80\u5355\u3002\u5b83\u662f\u8fde\u63a5\u6c60\u7684\u9996\u9009\u89e3\u51b3\u65b9\u6848\u4e4b\u4e00\u3002\u50cfSpring Boot 2.x\u8fd9\u6837\u7684\u6846\u67b6\u5c06\u5176\u4f5c\u4e3a\u9ed8\u8ba4\u7684\u8fde\u63a5\u7ba1\u7406\u5668\u3002<\/p>\n<p>\u8981\u4f7f\u7528HikariCP\uff0c\u8bf7\u5728\u6211\u4eec\u9879\u76ee\u7684pom.xml\u6587\u4ef6\u4e2d\u6dfb\u52a0\u4ee5\u4e0b\u4f9d\u8d56\u9879\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>dependency<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>groupId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>com.zaxxer<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>groupId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>artifactId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>HikariCP<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>artifactId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>version<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>3.4.5<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>version<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>dependency<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<\/code><\/pre>\n<p>HikariCP \u914d\u7f6e\uff1a<\/p>\n<p>\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u57fa\u4e8eJava\u7684\u914d\u7f6e\uff0c\u5982\u6211\u4eec\u4e0b\u9762\u7684\u793a\u4f8b\u7a0b\u5e8f\u6240\u793a\uff0c\u6216\u8005\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u5c5e\u6027\u6587\u4ef6\u6765\u914d\u7f6eHikariCP\u3002\u8ba9\u6211\u4eec\u770b\u4e00\u4e0b\u4e0b\u9762\u7684\u5c5e\u6027\u3002<\/p>\n<ul class=\"post-ul\">\n<li>idleTimeout: Time in milliseconds for which connection object can stay in the pool as idle. It works with minimumIdle and maximumPoolSize properties. After a specified time connection object will be released.<\/li>\n<li>connectionTimeout: Time in milliseconds for which the client will wait for connection object from Pool. If the time limit is reached then SQL Exception will be thrown.<\/li>\n<li>autoCommit: We can specify true or false and if it is set to true then it will automatically commit every SQL statements you execute and if it is set to false then we need to commit SQL statements manually<\/li>\n<li>cachePrepStmts: Enable caching for Prepare Statement<\/li>\n<li>minimumIdle: Minimum number of connection objects needs to remain in the pool at any time.<\/li>\n<li>maximumPoolSize: Maximum number of connections that can stay in the pool.<\/li>\n<\/ul>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">package<\/span> <span class=\"token namespace\">com<span class=\"token punctuation\">.<\/span>journaldev<span class=\"token punctuation\">.<\/span>example<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token comment\">\/**\r\n * Java JDBC Connection pool using HikariCP example program\r\n * \r\n * @author pankaj\r\n *\/<\/span>\r\n\r\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>sql<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">Connection<\/span><\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>sql<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">ResultSet<\/span><\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>sql<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">SQLException<\/span><\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>sql<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">Statement<\/span><\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">com<span class=\"token punctuation\">.<\/span>zaxxer<span class=\"token punctuation\">.<\/span>hikari<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">HikariConfig<\/span><\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">com<span class=\"token punctuation\">.<\/span>zaxxer<span class=\"token punctuation\">.<\/span>hikari<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">HikariDataSource<\/span><\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">HikariCPDemo<\/span> <span class=\"token punctuation\">{<\/span>\r\n\r\n\t<span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token class-name\">HikariDataSource<\/span> dataSource <span class=\"token operator\">=<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n\t<span class=\"token keyword\">static<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t<span class=\"token class-name\">HikariConfig<\/span> config <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">HikariConfig<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\tconfig<span class=\"token punctuation\">.<\/span><span class=\"token function\">setJdbcUrl<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"jdbc:mysql:\/\/localhost:3306\/empdb\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\tconfig<span class=\"token punctuation\">.<\/span><span class=\"token function\">setUsername<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"root\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\tconfig<span class=\"token punctuation\">.<\/span><span class=\"token function\">setPassword<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"root\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\tconfig<span class=\"token punctuation\">.<\/span><span class=\"token function\">addDataSourceProperty<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"minimumIdle\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"5\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\tconfig<span class=\"token punctuation\">.<\/span><span class=\"token function\">addDataSourceProperty<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"maximumPoolSize\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"25\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n\t\tdataSource <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">HikariDataSource<\/span><span class=\"token punctuation\">(<\/span>config<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t<span class=\"token punctuation\">}<\/span>\r\n\r\n\t<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> args<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">throws<\/span> <span class=\"token class-name\">SQLException<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t<span class=\"token class-name\">Connection<\/span> connection <span class=\"token operator\">=<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token class-name\">Statement<\/span> statement <span class=\"token operator\">=<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token class-name\">ResultSet<\/span> resultSet <span class=\"token operator\">=<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t\tconnection <span class=\"token operator\">=<\/span> dataSource<span class=\"token punctuation\">.<\/span><span class=\"token function\">getConnection<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\tstatement <span class=\"token operator\">=<\/span> connection<span class=\"token punctuation\">.<\/span><span class=\"token function\">createStatement<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\tresultSet <span class=\"token operator\">=<\/span> statement<span class=\"token punctuation\">.<\/span><span class=\"token function\">executeQuery<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"select * from tblemployee\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\t<span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>resultSet<span class=\"token punctuation\">.<\/span><span class=\"token function\">next<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t\t\t<span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"empId:\"<\/span> <span class=\"token operator\">+<\/span> resultSet<span class=\"token punctuation\">.<\/span><span class=\"token function\">getInt<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"empId\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\t\t<span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"empName:\"<\/span> <span class=\"token operator\">+<\/span> resultSet<span class=\"token punctuation\">.<\/span><span class=\"token function\">getString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"empName\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\t\t<span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"dob:\"<\/span> <span class=\"token operator\">+<\/span> resultSet<span class=\"token punctuation\">.<\/span><span class=\"token function\">getDate<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"dob\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\t\t<span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"designation:\"<\/span> <span class=\"token operator\">+<\/span> resultSet<span class=\"token punctuation\">.<\/span><span class=\"token function\">getString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"designation\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\t<span class=\"token punctuation\">}<\/span>\r\n\t\t<span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">finally<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t\tresultSet<span class=\"token punctuation\">.<\/span><span class=\"token function\">close<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\tstatement<span class=\"token punctuation\">.<\/span><span class=\"token function\">close<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\tconnection<span class=\"token punctuation\">.<\/span><span class=\"token function\">close<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token punctuation\">}<\/span>\r\n\t<span class=\"token punctuation\">}<\/span>\r\n<span class=\"token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<p>\u7ed3\u679c\uff1a<\/p>\n<pre class=\"post-pre\"><code>empId:1\r\nempName:Adam\r\ndob:1998-08-15\r\ndesignation:Manager\r\nempId:2\r\nempName:Smith\r\ndob:2001-01-11\r\ndesignation:Clerk\r\nempId:3\r\nempName:James\r\ndob:1996-03-13\r\ndesignation:Officer\r\n<\/code><\/pre>\n<h3>3) \u4eba\u9020\u4ebaC3P0<\/h3>\n<p>C3P0\u662f\u6700\u53e4\u8001\u7684\u5e93\u4e4b\u4e00\u3002\u4e00\u822c\u6765\u8bf4\uff0c\u5b83\u4e0eHibernate\u4e00\u8d77\u4f7f\u7528\u3002\u4f7f\u7528C3P0\uff0c\u6211\u4eec\u9700\u8981\u5c06\u4ee5\u4e0b\u4f9d\u8d56\u9879\u6dfb\u52a0\u5230\u9879\u76ee\u4e2d\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>dependency<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>groupId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>com.mchange<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>groupId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>artifactId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>c3p0<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>artifactId<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n\t<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;<\/span>version<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>0.9.5.5<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>version<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;\/<\/span>dependency<\/span><span class=\"token punctuation\">&gt;<\/span><\/span>\r\n<\/code><\/pre>\n<p>\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528C3P0\u914d\u7f6e\u4ee5\u4e0b\u5c5e\u6027\u3002<\/p>\n<ul class=\"post-ul\">\n<li>driverClass: Preferred Jdbc Driver<\/li>\n<li>jdbcUrl: JDBC Url for the database.<\/li>\n<li>initialPoolSize: Number of connections created in the pool at startup.<\/li>\n<li>acquireIncrement: Number of new connections needs to be created when the current size is not enough.<\/li>\n<li>maxIdleTime: Number of seconds Connection can remain in Pool without being used.<\/li>\n<li>maxPoolSize: Maximum number of connections that can stay in Pool.<\/li>\n<li>minPoolSize: Minimum number of connection objects needs to remain in Pool at any time.<\/li>\n<\/ul>\n<pre class=\"post-pre\"><code><span class=\"token keyword\">package<\/span> <span class=\"token namespace\">com<span class=\"token punctuation\">.<\/span>journaldev<span class=\"token punctuation\">.<\/span>example<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token comment\">\/**\r\n * Java JDBC Connection pool using C3PO example program\r\n * \r\n * @author pankaj\r\n *\/<\/span>\r\n\r\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>sql<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">Connection<\/span><\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>sql<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">ResultSet<\/span><\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>sql<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">SQLException<\/span><\/span><span class=\"token punctuation\">;<\/span>\r\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">java<span class=\"token punctuation\">.<\/span>sql<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">Statement<\/span><\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token keyword\">import<\/span> <span class=\"token import\"><span class=\"token namespace\">com<span class=\"token punctuation\">.<\/span>mchange<span class=\"token punctuation\">.<\/span>v2<span class=\"token punctuation\">.<\/span>c3p0<span class=\"token punctuation\">.<\/span><\/span><span class=\"token class-name\">ComboPooledDataSource<\/span><\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">class<\/span> <span class=\"token class-name\">C3P0Demo<\/span> <span class=\"token punctuation\">{<\/span>\r\n\r\n\t<span class=\"token keyword\">static<\/span> <span class=\"token class-name\">ComboPooledDataSource<\/span> comboPooledDataSource <span class=\"token operator\">=<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n\t<span class=\"token keyword\">static<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\tcomboPooledDataSource <span class=\"token operator\">=<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ComboPooledDataSource<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n\t\tcomboPooledDataSource<span class=\"token punctuation\">.<\/span><span class=\"token function\">setJdbcUrl<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"jdbc:mysql:\/\/localhost:3306\/empdb?useSSL=false\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\tcomboPooledDataSource<span class=\"token punctuation\">.<\/span><span class=\"token function\">setUser<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"root\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\tcomboPooledDataSource<span class=\"token punctuation\">.<\/span><span class=\"token function\">setPassword<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"root\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n\t\tcomboPooledDataSource<span class=\"token punctuation\">.<\/span><span class=\"token function\">setMinPoolSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\tcomboPooledDataSource<span class=\"token punctuation\">.<\/span><span class=\"token function\">setAcquireIncrement<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\tcomboPooledDataSource<span class=\"token punctuation\">.<\/span><span class=\"token function\">setMaxPoolSize<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">30<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\r\n\t<span class=\"token punctuation\">}<\/span>\r\n\r\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">main<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> args<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">throws<\/span> <span class=\"token class-name\">SQLException<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t<span class=\"token class-name\">Connection<\/span> connection <span class=\"token operator\">=<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token class-name\">Statement<\/span> statement <span class=\"token operator\">=<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token class-name\">ResultSet<\/span> resultSet <span class=\"token operator\">=<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token keyword\">try<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t\tconnection <span class=\"token operator\">=<\/span> comboPooledDataSource<span class=\"token punctuation\">.<\/span><span class=\"token function\">getConnection<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\tstatement <span class=\"token operator\">=<\/span> connection<span class=\"token punctuation\">.<\/span><span class=\"token function\">createStatement<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\tresultSet <span class=\"token operator\">=<\/span> statement<span class=\"token punctuation\">.<\/span><span class=\"token function\">executeQuery<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"select * from tblemployee\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\t<span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>resultSet<span class=\"token punctuation\">.<\/span><span class=\"token function\">next<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t\t\t<span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"empId:\"<\/span> <span class=\"token operator\">+<\/span> resultSet<span class=\"token punctuation\">.<\/span><span class=\"token function\">getInt<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"empId\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\t\t<span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"empName:\"<\/span> <span class=\"token operator\">+<\/span> resultSet<span class=\"token punctuation\">.<\/span><span class=\"token function\">getString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"empName\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\t\t<span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"dob:\"<\/span> <span class=\"token operator\">+<\/span> resultSet<span class=\"token punctuation\">.<\/span><span class=\"token function\">getDate<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"dob\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\t\t<span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span>out<span class=\"token punctuation\">.<\/span><span class=\"token function\">println<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"designation:\"<\/span> <span class=\"token operator\">+<\/span> resultSet<span class=\"token punctuation\">.<\/span><span class=\"token function\">getString<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"designation\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\t<span class=\"token punctuation\">}<\/span>\r\n\t\t<span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">finally<\/span> <span class=\"token punctuation\">{<\/span>\r\n\t\t\tresultSet<span class=\"token punctuation\">.<\/span><span class=\"token function\">close<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\tstatement<span class=\"token punctuation\">.<\/span><span class=\"token function\">close<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t\tconnection<span class=\"token punctuation\">.<\/span><span class=\"token function\">close<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\r\n\t\t<span class=\"token punctuation\">}<\/span>\r\n\t<span class=\"token punctuation\">}<\/span>\r\n\r\n<span class=\"token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<p>\u8f93\u51fa\u7ed3\u679c\uff1a<\/p>\n<pre class=\"post-pre\"><code>Aug 29, 2020 8:59:05 PM com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource \r\nINFO: Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -&gt; 3, acquireRetryAttempts -&gt; 30, acquireRetryDelay -&gt; 1000, autoCommitOnClose -&gt; false, automaticTestTable -&gt; null, breakAfterAcquireFailure -&gt; false, checkoutTimeout -&gt; 0, connectionCustomizerClassName -&gt; null, connectionTesterClassName -&gt; com.mchange.v2.c3p0.impl.DefaultConnectionTester, contextClassLoaderSource -&gt; caller, dataSourceName -&gt; 1hge9kqacgbp7hjpftse6|77a567e1, debugUnreturnedConnectionStackTraces -&gt; false, description -&gt; null, driverClass -&gt; null, extensions -&gt; {}, factoryClassLocation -&gt; null, forceIgnoreUnresolvedTransactions -&gt; false, forceSynchronousCheckins -&gt; false, forceUseNamedDriverClass -&gt; false, identityToken -&gt; 1hge9kqacgbp7hjpftse6|77a567e1, idleConnectionTestPeriod -&gt; 0, initialPoolSize -&gt; 3, jdbcUrl -&gt; jdbc:mysql:\/\/localhost:3306\/empdb?useSSL=false, maxAdministrativeTaskTime -&gt; 0, maxConnectionAge -&gt; 0, maxIdleTime -&gt; 0, maxIdleTimeExcessConnections -&gt; 0, maxPoolSize -&gt; 30, maxStatements -&gt; 0, maxStatementsPerConnection -&gt; 0, minPoolSize -&gt; 3, numHelperThreads -&gt; 3, preferredTestQuery -&gt; null, privilegeSpawnedThreads -&gt; false, properties -&gt; {user=******, password=******}, propertyCycle -&gt; 0, statementCacheNumDeferredCloseThreads -&gt; 0, testConnectionOnCheckin -&gt; false, testConnectionOnCheckout -&gt; false, unreturnedConnectionTimeout -&gt; 0, userOverrides -&gt; {}, usesTraditionalReflectiveProxies -&gt; false ]\r\n\r\nempId:1\r\nempName:Adam\r\ndob:1998-08-15\r\ndesignation:Manager\r\nempId:2\r\nempName:Smith\r\ndob:2001-01-11\r\ndesignation:Clerk\r\nempId:3\r\nempName:James\r\ndob:1996-03-13\r\ndesignation:Officer\r\n<\/code><\/pre>\n<p>JDBC\u8fde\u63a5\u6c60\u793a\u4f8b\u6559\u7a0b\u5c31\u4ecb\u7ecd\u5230\u8fd9\u91cc\uff0c\u5e0c\u671b\u6ca1\u6709\u6f0f\u6389\u91cd\u8981\u7684\u5185\u5bb9\u3002<\/p>\n<p>\u53c2\u8003\u8d44\u6599\uff1aHikariCP\u3001Apache Commons DBCP\u3001C3P0<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8fde\u63a5\u6c60\u610f\u5473\u7740\u4e00\u7ec4\u8fde\u63a5\u5bf9\u8c61\u3002\u8fde\u63a5\u6c60\u57fa\u4e8e\u5bf9\u8c61\u6c60\u8bbe\u8ba1\u6a21\u5f0f\u3002\u5f53\u521b\u5efa\u65b0\u5bf9\u8c61\u7684\u6210\u672c\uff08\u65f6\u95f4\u548c\u8d44\u6e90\uff0c\u5982CPU\u3001\u7f51\u7edc\u548cIO\uff09\u8f83\u9ad8 [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-50673","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Java\u4e2d\u7684\u8fde\u63a5\u6c60\u7ba1\u7406 - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/java\u4e2d\u7684\u8fde\u63a5\u6c60\u7ba1\u7406\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java\u4e2d\u7684\u8fde\u63a5\u6c60\u7ba1\u7406\" \/>\n<meta property=\"og:description\" content=\"\u8fde\u63a5\u6c60\u610f\u5473\u7740\u4e00\u7ec4\u8fde\u63a5\u5bf9\u8c61\u3002\u8fde\u63a5\u6c60\u57fa\u4e8e\u5bf9\u8c61\u6c60\u8bbe\u8ba1\u6a21\u5f0f\u3002\u5f53\u521b\u5efa\u65b0\u5bf9\u8c61\u7684\u6210\u672c\uff08\u65f6\u95f4\u548c\u8d44\u6e90\uff0c\u5982CPU\u3001\u7f51\u7edc\u548cIO\uff09\u8f83\u9ad8 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/java\u4e2d\u7684\u8fde\u63a5\u6c60\u7ba1\u7406\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-01-14T06:16:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-28T21:36:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/6564859ca4b2f92e6c730acb\/2-0.png\" \/>\n<meta name=\"author\" content=\"\u6587, \u7fd4\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u6587, \u7fd4\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/java%e4%b8%ad%e7%9a%84%e8%bf%9e%e6%8e%a5%e6%b1%a0%e7%ae%a1%e7%90%86\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/java%e4%b8%ad%e7%9a%84%e8%bf%9e%e6%8e%a5%e6%b1%a0%e7%ae%a1%e7%90%86\/\",\"name\":\"Java\u4e2d\u7684\u8fde\u63a5\u6c60\u7ba1\u7406 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-01-14T06:16:01+00:00\",\"dateModified\":\"2024-04-28T21:36:32+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/java%e4%b8%ad%e7%9a%84%e8%bf%9e%e6%8e%a5%e6%b1%a0%e7%ae%a1%e7%90%86\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/java%e4%b8%ad%e7%9a%84%e8%bf%9e%e6%8e%a5%e6%b1%a0%e7%ae%a1%e7%90%86\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/java%e4%b8%ad%e7%9a%84%e8%bf%9e%e6%8e%a5%e6%b1%a0%e7%ae%a1%e7%90%86\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\u4e2d\u7684\u8fde\u63a5\u6c60\u7ba1\u7406\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c\",\"name\":\"\u6587, \u7fd4\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g\",\"caption\":\"\u6587, \u7fd4\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/wenxiang\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/java%e4%b8%ad%e7%9a%84%e8%bf%9e%e6%8e%a5%e6%b1%a0%e7%ae%a1%e7%90%86\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Java\u4e2d\u7684\u8fde\u63a5\u6c60\u7ba1\u7406 - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/java\u4e2d\u7684\u8fde\u63a5\u6c60\u7ba1\u7406\/","og_locale":"zh_CN","og_type":"article","og_title":"Java\u4e2d\u7684\u8fde\u63a5\u6c60\u7ba1\u7406","og_description":"\u8fde\u63a5\u6c60\u610f\u5473\u7740\u4e00\u7ec4\u8fde\u63a5\u5bf9\u8c61\u3002\u8fde\u63a5\u6c60\u57fa\u4e8e\u5bf9\u8c61\u6c60\u8bbe\u8ba1\u6a21\u5f0f\u3002\u5f53\u521b\u5efa\u65b0\u5bf9\u8c61\u7684\u6210\u672c\uff08\u65f6\u95f4\u548c\u8d44\u6e90\uff0c\u5982CPU\u3001\u7f51\u7edc\u548cIO\uff09\u8f83\u9ad8 [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/java\u4e2d\u7684\u8fde\u63a5\u6c60\u7ba1\u7406\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-01-14T06:16:01+00:00","article_modified_time":"2024-04-28T21:36:32+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/6564859ca4b2f92e6c730acb\/2-0.png"}],"author":"\u6587, \u7fd4","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u6587, \u7fd4","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"6 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/java%e4%b8%ad%e7%9a%84%e8%bf%9e%e6%8e%a5%e6%b1%a0%e7%ae%a1%e7%90%86\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/java%e4%b8%ad%e7%9a%84%e8%bf%9e%e6%8e%a5%e6%b1%a0%e7%ae%a1%e7%90%86\/","name":"Java\u4e2d\u7684\u8fde\u63a5\u6c60\u7ba1\u7406 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-01-14T06:16:01+00:00","dateModified":"2024-04-28T21:36:32+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/java%e4%b8%ad%e7%9a%84%e8%bf%9e%e6%8e%a5%e6%b1%a0%e7%ae%a1%e7%90%86\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/java%e4%b8%ad%e7%9a%84%e8%bf%9e%e6%8e%a5%e6%b1%a0%e7%ae%a1%e7%90%86\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/java%e4%b8%ad%e7%9a%84%e8%bf%9e%e6%8e%a5%e6%b1%a0%e7%ae%a1%e7%90%86\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"Java\u4e2d\u7684\u8fde\u63a5\u6c60\u7ba1\u7406"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c","name":"\u6587, \u7fd4","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g","caption":"\u6587, \u7fd4"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/wenxiang\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/java%e4%b8%ad%e7%9a%84%e8%bf%9e%e6%8e%a5%e6%b1%a0%e7%ae%a1%e7%90%86\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/50673","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=50673"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/50673\/revisions"}],"predecessor-version":[{"id":83363,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/50673\/revisions\/83363"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=50673"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=50673"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=50673"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}