答案 1
(我是jDBI的主要作者)
jDBI 是一个建立在 JDBC 之上的便利库。JDBC运行良好,但通常似乎针对数据库供应商(驱动程序编写者)而不是用户进行了优化。jDBI 尝试公开相同的功能,但在针对用户优化的 API 中。
它比Hibernate或JPA之类的东西要低得多。最接近的类似库可能是MyBatis(iBATIS的分叉继承者)。
jDBI 支持两种样式 API,一种较旧的流利样式,如下所示:
List<Something> r = h.createQuery("select * from something where name = :name and id = :id")
.bind(0, "eric")
.bind("id", 1)
.map(Something.class)
.list();
较新的SQL对象API可以做更多反射类型的东西,并且确实开始抽象出一堆JDBC的东西:
interface TheBasics
{
@SqlUpdate("insert into something (id, name) values (:id, :name)")
int insert(@BindBean Something something);
@SqlQuery("select id, name from something where id = :id")
Something findById(@Bind("id") long id);
}
@Test
public void useTheBasics() throws Exception
{
TheBasics dao = dbi.onDemand(TheBasics.class);
dao.insert(new Something(7, "Martin"));
Something martin = dao.findById(7);
}
该库具有良好的参考文档(javadoc)和一些合理的教程样式文档,http://jdbi.org/。它自2004年以来一直存在,并且被相对较少的人(我个人认识的几十个人,也许有十几家公司)使用,但它对他们来说非常有效。大多数从事这项工作的人都是A +人,他们主要关心的是构建一个适合他们的工具 - 它是开源的,这在很大程度上是一个副作用。
答案 2
JDBC 是 Java 中用于访问 SQL 数据库的一个长期建立的标准。数据库供应商实现 JDBC 驱动程序,以便可以统一的方式访问所有数据库。实际上,在Java中对数据库所做的一切都使用JDBC。
JDBI似乎是JDBC之上的某种抽象层,但由于它的文档记录很差,所以很难说。它当然没有被广泛使用,这是我第一次听说它。
推荐
-
如何使用Java中的RESTful Web服务获取远程/客户端IP地址? 我已经在我的项目中编写了Rest Web服务。Web服务调用可能来自不同 machine.so 我需要通过REST Web服务找出IP地址。 从这个请求.getRemoteAddr()使用这个。 但是我不能使用getRemoteAddr()。因为我的请
-
从包含大量文件的zip文件中提取1文件的最快方法是什么? 我尝试了但它们也缺少一些东西。 LZMA SDK不提供一种如何使用的文档/教程,这非常令人沮丧。没有 javadoc。 虽然7z jbinding没有提供一种简单的方法来只提取1个文件,但是,它只提供了提取zip文件
-
输入/输出流在销毁时是否关闭? Java 中的 InputStreams 和 OutputStreams 是否在销毁时关闭()?我完全理解这可能是不好的形式(特别是在C和C++世界中),但我很好奇。 另外,假设我有以下代码: 无名的FileInputStream是否在p.load
-
Java 程序中的字符串大小是否有任何限制? 我有一个字符串定义为 字符串 xx 我可以分配的字符数是否有任何限制? 2) 我正在将用户输入分配给此字符串 xx。70%的人只说一个字。有时他们给出一个大句子,所以想知道可
-
标签
推荐