sql >> Database teknologi >  >> RDS >> Mysql

Bruger jeg Java PooledConnections korrekt?

Dette er ikke den rigtige måde. Datakilden skal administreres af den container, du kører programmet i. MysqlConnectionPoolDataSource er ikke en tilslutningspool. Det er blot en konkret implementering af javax.sql.DataSource interface. Du definerer det normalt i JNDI-konteksten og henter det derfra. Også MySQL selv angiver det hele eksplicit i deres dokumentation .

Nu, hvordan man bruger det afhænger af formålet med applikationen. Hvis det er en webapplikation, skal du henvise til JNDI-ressourcedokumentationen for den pågældende servletcontainer/appserver. Hvis det for eksempel er Tomcat, så kan du finde det her . Hvis du kører en klientapplikation --hvilket jeg meget vil stille spørgsmålstegn ved værdien af ​​en forbindelsespulje--, så skal du lede efter en forbindelsespoolingramme, som kan gøre brug af den MySQL-leverede forbindelsespoolede datakilde, som f.eks. C3P0 .

Det andet problem med koden, som du sendte, er, at PooledConnection#getConnection() returnerer det underliggende forbindelse som altså ikke er en samlet forbindelse. Hvis du ringer tæt på den, returnerer du ikke forbindelsen til poolen, men lukker den bare rigtigt. Poolen skal skabe en ny forbindelse hver gang.

Så trådsikkerhedshistorien, der afhænger af den virkelige den pågældende forbindelsespoolingramme. C3P0 har bevist sin robusthed i årevis, du bekymrer dig ikke om det, så længe du skriver JDBC-kode i henhold til standardformsproget, dvs. bruger kun JDBC-grænseflader og erhverve og luk alle ressourcer (Forbindelse , Erklæring og Resultatsæt ) i kortest mulig omfang.




  1. Sådan trimmes de første tre tegn baseret på det første bogstav (udtryk), før det indsættes i databasen

  2. Konstruer dato fra år og ugenummer i MSSQL

  3. PostgreSQL Management og Automation med ClusterControl

  4. Kald en lagret procedure for hver række, der returneres af en forespørgsel i MySQL