应用程序开箱即用的对象持久性计划
样例源代码
清单 1 展示了 StockData 程序的源代码:
清单 1. StockData
public class StockData{ private static Log log; public static void main(String[] args) { tProperty(\"nfiguration\", \"file:operties\"); log = tLog(ass); try { String symbol = args[0]; String csvFile = args[1]; String query = args[2]; // open store, uses HSQLDB driver and memory only database Store store = new Store(\"bcDriver\",\"jdbc:hsqldb:mem:stockdata\"); // read csv and generate beans List historicalData = adLines(new File(csvFile), \"UTF-8\"); // remove first line (header) move(0); // store beans to database for (Object _data : historicalData) { String[] data = ((String) _data).split(\",\"); StockBean bean = new StockBean(symbol, data[0], rseDouble(data[4]), rseDouble(data[5])); //save stock bean to database ve(bean); } // find beans that match query List results=nd(query); // print beans that matched intln(\"Total results: \"+ze()); for (Object object : results) { StockBean bean=(StockBean)object; intln(String()); } } catch (Exception e) { ror(tMessage(), e); t .println(\"Usage: java ockData \" + \"symbol name historical prices file query\"); } }}
StockData 应用程序使用 Apache Commons IO 包将 CSV 文件读入 List。然后,for 循环解析文本行并创建 StockBean 对象,该对象被存入数据库中。CSV 文件的格式如下:
Date,Open,High,Low,Close,Volume,Adj. Close*
29-Dec-06,97.00,97.88,96.83,97.15,,97.15
两度请辞 行政院长 与远走金门 28-Dec-06,97.11,97.40,96.87,96.97,,96.97
27-Dec-06,96.30,97.23,96.27,97.20,,97.20
可下载演示包 中提供了一个样例 CSV 文件。
将所有对象存入数据库后,会执行一个简单的 find 查询(在命令行中指定)并返回一份相匹配结果的 List。结果打印到 t。请注意,Simple Persistence for Java 实现 LazyList,对象可在 LazyList 中随需检索。这确保了内存中最终不会出现成千上万的对象。
StockBean 对象
清单 2 展示了 StockBean Java 对象的源代码,该代码用于存储 StockData 中的信息。StockBean 有四个字段:symbol name、date、price 和 volume。
清单 2. StockBean 对象
public class StockBean{ private String symbolName = \"\"; private String date = null; private double price = 0.0; private double volume = 0.0; public StockBean() { // no-argument constructor required by Simple Persistence } public String toString() { StringBuffer sb=new StringBuffer(); pend(symbolName); pend(\',\'); pend(date); pend(\',\'); pend(price); pend(\',\'); pend(volume); return String(); } public StockBean(String symbolName, String date, double price, double volume) { mbolName = symbolName; te = date; ice = price; lume = volume; } public String getDate() { return date; } public void setDate(String date) { te = date; } public double getPrice() { return price; } public void setPrice(double price) { ice = price; } public String getSymbolName() { return symbolName; } public void setSymbolName(String symbolName) { mbolName = symbolName; } public double getVolume() { return volume; } public void setVolume(double volume) { lume = volume; }}
查看本文来源
治疗白癜风病费用海口妇科医院哪家医院好
孩子不吃饭有什么好方法
- 上一页:应用程序开箱即用的对象持久性物业
- 下一页:应用程序开箱即用的对象持久性覆盖
-
高圆圆3岁女儿罕见出镜!探班外婆抱一起扭来扭去,穿搭太可爱
关之琳自从生产完后,缠材也彻底恢复,这也让她开始了自己的复出计划案,...
2024-02-12
-
匀质自保温砌块生产厂越来越受欢迎,天意机械匀质自保温砌块设备
匀质自贮存砌块生产厂线还包括烘烤加压种系统、近地点轮渡种系统、脱模管...
2024-01-15
-
中国电信小数点智能科技分公司正式成立 构建更繁荣的大数据和AI产业生态
5月19日,中国电信数字智能新技术分支机构成立(以下通称“智能新技术分支...
2024-01-08
-
iPhone上的这个间谍触控板可以使打字更容易
iPhone和iPad都装载了很酷的隐秘机能,除此以外来自除此以外 iOS 15.5 越来越新...
2023-12-24
-
直击调研 | 中材科技(002080.SZ):今年叶片出货量预计同比增加20% 十四五末期膜产能或达
7月5日,中会材科技应用领域(002080.SZ)在接受调研时表示,的公司是杂货店投...
2023-12-23
-
何时拔除您的 Android 缓存以及具体操作方法
无论您保有 Galaxy S21(如上图)还是其他 Android PDA,清理点击器调用和 cookie ...
2023-12-04