扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:中国IT实验室 来源:中国IT实验室 2007年8月23日
关键字: 持久性
简单元素
正如能在 清单 1 的 StockData 源码中看到的那样,Simple Persistence for Java 真正简化了对象关系型持久性。基本上只需三行代码就可将持久性添加到您的 Java 应用程序中并从 HSQLDB 中检索对象:
构造函数十分简单;只需将 JDBC 驱动作为第一个参数,将 JDBC URL 作为第二个参数:
Store store = new Store("org.hsqldb.jdbcDriver","jdbc:hsqldb:mem:stockdata"); |
稍后,Store 对象将用于存储及检索对象。
将对象保存到数据库中也很直接:
StockBean bean = new StockBean(symbol, date, price, volume); store.save(bean); |
只需调用 save() 将对象存储到数据库。任何必要的表都会在幕后创建。
使用用于检索对象的查询语言来查找对象也相当简单:
List results=store.find(query); |
有四种不同的 find() 方法:
带参数的 find() 方法与在 SQL 中时一样:“?” 是参数对象的占位符。findSingle() 方法是自解释的。
定制查询语言
到现在,您也许注意到了一件事,Simple Persistence for Java 使用定制查询语言来查找对象。查询语法是面向对象的,并且没有了表、索引或其他典型的对象关系型数据库的概念。例如,下列查询在一个 List 中返回所有 StockBean 对象:
find stockbean |
由于作为结果的 List 是惰性的,因而可以不影响应用程序性能或内存消耗即可查询大量对象。所以,即使实际对象是随需检索的,getSize() 方法也会返回一个结果的总数。
查询语法
Simple Persistence for Java 查询由 “find” 开始,第二个元素是要检索的类名。只有当许多类重名但所处包不同时才需要一个完整类名。
Where 子句与在 SQL 中的那些类似。典型的操作符,如 “or”、“and”、“not”、“<”、“>”、“=”、“like” 等等也得到了支持。
下列查询会返回其值介于 USD90 和 USD92.5 之间的所有 StockBean 对象:
find stockbean where price>90 and price6lt;'92.5' and symbolname='IBM' |
注意,表示整型值可以不用引号,但双精度值和字符串值则需要引号。
也可以使用 SQL 中常见的 “order by” 语法来对结果进行排序。例如,下列命令指定结果按价格降序排列:
find stockbean where price>90 and price<'92.5' and symbolname='IBM' order by price desc |
运行样例
StockData 程序在一个 CSV 文件中搜索证券数据。可下载包 包含编译过的源代码和一个叫做 stockdata.bat 的批处理文件。该程序的语法是 stockdata.bat <symbol name> <csv file name> <find query>。可以使用此语法自己来查询样例应用程序。
下列命令的结果
stockdata.bat IBM ibm_2006.csv "find stockbean where price>90 and price6lt;'92.5' and symbolname='IBM'"
如图 1 所示:
图 1. 查询 StockData 应用程序的输出
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者