学无所长,一事无成
分类: Java
2015-07-08 15:21:29
逆旅过客:http://blog.chinaunix.net/uid/298861.html
本文介绍Clojure如何使用JDBC访问Oracle数据库,我们会学习clojure.java.jdbc中的一些基本函数。
OS: Oracle Linux Server release 6.6
Java:java version "1.7.0_79"
Lein:Leiningen 2.5.1 on Java 1.7.0_79 OpenJDK 64-Bit Server VM
Clojure:1.6.0
IDE:intellij IDEA 14.1.4
依赖软件:
一般情况下首选c3p0、dbcp,久经考验,比较成熟稳定。
官网:clojure.jdbc-c3p0 –[clojure.jdbc/clojure.jdbc-c3p0 "0.3.2"]
官网: 百度:C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。
c3p0与dbcp区别:
c3p0有自动回收空闲连接功能;dbcp没有自动回收空闲连接的功能;
c3p0提供最大空闲时间;dbcp提供最大连接数。
c3p0当超过最大空闲连接时间时,当前连接就会被断掉;dbcp当超过最大连接数时,所有连接都会被断开
安装此驱动需要lein-localrepo 插件:
$ lein new app jdbc-test; cd jdbc-test;lein pom
第一种方法:安装官网驱动
{:user {:plugins [[lein-localrepo "0.5.3"]]}}
:plugins [[lein-localrepo "0.5.3"]]
运行 lein deps
$ cd jdbc-test;
$ lein localrepo install $HOME/repo/ojdbc7-12.1.0.2.jar oracle.jdbc/oracledriver "12.1.0.2"
以下指令可以查看localrepo
$ lein localrepo list # lists all artifacts, all versions
$ lein localrepo list -s # lists all artifacts with description
$ lein localrepo list -f # lists all artifacts and filenames
$ lein localrepo list -d # lists all artifacts with detail
$ vi jdbc-test/project.clj,添加 [oracle.jdbc/oracledriver "12.1.0.2"]
$ lein deps
第二种方法:安装 [org.clojars.zentrope/ojdbc "11.2.0.3.0"]
这种方式最简便,直接从clojars仓库就可以安装(本质上还是官网的驱动)
$ vi project.clj,添加依赖:[org.clojars.zentrope/ojdbc "11.2.0.3.0"]
$ lein deps
修改 project.clj,添加依赖
$ vi project.clj :dependencies [[org.clojure/clojure "1.6.0"]] 修改为 :dependencies [[org.clojure/clojure "1.6.0"] [org.clojure/java.jdbc "0.3.7"] ;[com.mchange/c3p0 "0.9.5.1"] [clojure.jdbc/clojure.jdbc-c3p0 "0.3.2"] [oracle.jdbc/oracledriver "12.1.0.2"] ;[org.clojars.zentrope/ojdbc "11.2.0.3.0"] [com.jolbox/bonecp "0.8.0.RELEASE"]] $ lein deps
lein deps 会到如下网站进行搜素 style="color:#252525; font-family:文泉驿等宽微米黑"> style="color:#252525; font-family:文泉驿等宽微米黑">
手工可搜素如下网站
最终,软件会安装在如下目录 $HOME/.m2/repository/org/clojure/java.jdbc/0.3.7 $HOME/.m2/repository/clojure/jdbc/clojure.jdbc-c3p0/0.3.2/
$ lein classpath|tr ':' '\n' #查看下依赖路径 |
$ cd jdbc-test;vi src/jdbc_test/core.clj
|
$ lein run
我们不希望每次进行数据库操作都创建一个新的连接,因此需要对连接进行复用,有如下两种方案:
(ns dbexample |
[clojure.jdbc/clojure.jdbc-dbcp "0.3.2"]
$ vi jdbc-test/core.clj
|
需要软件
C3P0: SLF4J: style="color:#252525; font-family:文泉驿等宽微米黑">,version:1.7.12,用于日志记录,我们使用clojars.org网站提供的封装
$ vi project.clj,添加依赖:
[clojure.jdbc/clojure.jdbc-c3p0 "0.3.2"]
[com.revelytix.logbacks/slf4j-log4j12 "1.0.0"]
第一种方式:
$ vi jdbc-test/core.clj
|
第二种方式:
$ vi jdbc-test/core.clj
|
略...
java.jdbc API Reference create-table-ddl
drop-table-ddl
do-command
execute!
十一、HoneySQL
使用:(require '[honeysql.core :as sql] '[honeysql.helpers :refer
:all])
参考资料:
Leiningen教程中文版 %E4%B8%AD%E6%96%87%E7%89%88