之前的两个持久化框架都没有使用连接池。总感觉不放心。试着配置了个c3p0的连接池在clojureql框架中使用。同样的,放在clj-record框架中也没问题。
[b]添加依赖[/b]
[b]样例代码[/b](由于之前的项目一直配的是DBCP连接池,C3P0的自己没配置过,看了下C3P0的文档,大概配置以下两种。第一种应该没问题。第二种我就不确定了)
[b]添加依赖[/b]
[clojureql "1.0.4"]
[mysql/mysql-connector-java "5.1.11"]
[c3p0/c3p0 "0.9.1.2"]
[b]样例代码[/b](由于之前的项目一直配的是DBCP连接池,C3P0的自己没配置过,看了下C3P0的文档,大概配置以下两种。第一种应该没问题。第二种我就不确定了)
(ns sample.c3p0
(:import (com.mchange.v2.c3p0 ComboPooledDataSource
DataSources
PooledDataSource))
(:use clojureql.core))
;;c3p0连接池
(def db_pool
(let [config {:driver "com.mysql.jdbc.Driver"
:subprotocol "mysql"
:subname "//127.0.0.1:3306/test"
:user "root"
:password "123"}
cpds (doto (ComboPooledDataSource.)
(.setDriverClass (:driver config))
(.setJdbcUrl (str "jdbc:" (:subprotocol config) ":" (:subname config)))
(.setUser (:user config))
(.setPassword (:password config)))]
{:datasource cpds}))
(prn @(-> (table db_pool :users)
(project [:name])
(take 1)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;c3p0连接池,我不大确定这样写是不是正确的
(def db_pool!
(let [url "jdbc:mysql://localhost/test"
user "root"
password "123"]
{:datasource (->> (DataSources/unpooledDataSource url user password)
(DataSources/pooledDataSource))
:auto-commit true
:fetch-size 1000}))
(prn @(-> (table db_pool! :users)
(project [:name])
(take 1)))