Clojure学习——给持久化框架配上c3p0连接池

本文详细介绍了如何在ClojureQL和clj-record框架中配置和使用C3P0连接池,包括配置代码示例和实际应用演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前的两个持久化框架都没有使用连接池。总感觉不放心。试着配置了个c3p0的连接池在clojureql框架中使用。同样的,放在clj-record框架中也没问题。

[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)))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值