科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Java 应用程序开箱即用的对象持久性(2)

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

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

作者:中国IT实验室 来源:中国IT实验室 2007年8月23日

关键字: 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;
  }
}

查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章