首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Linux频道
中国IT教育
Google
首页 资讯动态 认证考试 新手入门 核心技术 高级技术 J2EE J2ME Java&XML 开源技术 其他技术 RSS订阅 论坛 专题
您现在的位置: 中国IT实验室 >> Java >> 新手入门 >> oop面向对象 >> 正文

Java 应用程序开箱即用的对象持久性

样例源代码

清单 1 展示了 StockData 程序的源代码:


清单 1. StockData

				
public class StockData
{
  private static Log log;
  public static void main(String[] args)
  {
    System.setProperty("log4j.configuration", "file:log4j.properties");
    log = LogFactory.getLog(StockData.class);
    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("org.hsqldb.jdbcDriver","jdbc:hsqldb:mem:stockdata");
      // read csv and generate beans
      List historicalData = FileUtils.readLines(new File(csvFile), "UTF-8");
      // remove first line (header)
      historicalData.remove(0);
      // store beans to database
      for (Object _data : historicalData)
      {
        String[] data = ((String) _data).split(",");
        StockBean bean = new StockBean(symbol, data[0],
            Double.parseDouble(data[4]), Double.parseDouble(data[5]));
        //save stock bean to database
        store.save(bean);
      }
      // find beans that match query
      List results=store.find(query);
      // print beans that matched
      System.out.println("Total results: "+results.size());
      for (Object object : results)
      {
        StockBean bean=(StockBean)object;
        System.out.println(bean.toString());
      }
    }
    catch (Exception e)
    {
      log.error(e.getMessage(), e);
      System.out
          .println("Usage: java sample.StockData " +
              "<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,4455900,97.15
28-Dec-06,97.11,97.40,96.87,96.97,4501700,96.97
27-Dec-06,96.30,97.23,96.27,97.20,4571600,97.20

下载演示包 中提供了一个样例 CSV 文件。

    将所有对象存入数据库后,会执行一个简单的 find 查询(在命令行中指定)并返回一份相匹配结果的 List。结果打印到 System.out。请注意,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();
    sb.append(symbolName);
    sb.append(',');
    sb.append(date);
    sb.append(',');
    sb.append(price);
    sb.append(',');
    sb.append(volume);
    return sb.toString();
  }
  public StockBean(String symbolName, String date, double price, double volume)
  {
    this.symbolName = symbolName;
    this.date = date;
    this.price = price;
    this.volume = volume;
  }
  public String getDate()
  {
    return date;
  }
  public void setDate(String date)
  {
    this.date = date;
  }
  public double getPrice()
  {
    return price;
  }
  public void setPrice(double price)
  {
    this.price = price;
  }
  public String getSymbolName()
  {
    return symbolName;
  }
  public void setSymbolName(String symbolName)
  {
    this.symbolName = symbolName;
  }
  public double getVolume()
  {
    return volume;
  }
  public void setVolume(double volume)
  {
    this.volume = volume;
  }
}

 

上一页  [1] [2] [3] [4] 下一页

【责编:Peng】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 ·Java入门 Tomcat的配置技巧精华专题…
 ·Oracle RMAN物理备份技术详解…
 今日更新
 社区讨论
 博客论点
 频道精选
 Java 频道导航