MongoDB的存储是基于文档的,区别于以往的关系型数据库,它的数据模式可以更加宽松灵活,特别适合日益多变的互联网应用。在最开始接触MongoDB的时候就被它JavaScript式的操作所吸引,更被JSON式的数据存储所震撼。当时就有一种直觉,这将极大简化应用接口的开发工作,使得数据交互变得异常轻松。下面我将以示例代码的方式介绍我的使用方法。
本示例代码使用了如下开发包:
MongoDB的官方Driver包:mongo-2.7.3.jar
基于MongoDB的ORM产品:morphia-0.99.jar
性能与功能都很棒的Jackson JSON:jackson-all-1.9.3.jar
另外还要辅助一些其他的依赖包:
morphia-logging-slf4j-0.99.jar
slf4j-api-1.6.1.jar
slf4j-nop-1.6.1.jar
相关链接:
MongoDB安装为Windows服务方法与注意事项:http://blog.csdn.net/chaijunkun/article/details/7227967
Java中JSON解析器的一点见解:http://blog.csdn.net/chaijunkun/article/details/7208828
上面的两篇文章是本人总结的一些经验之谈。作为参考,朋友们可以在遇到问题的时候参阅上面两篇文章。
下面进入正题:
我的思路分为两方面,即数据的输入和数据的输出。
输入源是一个文本文件,其中的数据来自SQL Server中的Northwind示例数据库。具体来说是从其中的订单信息中抽离出相关联的部分,经过加工整理而成。(数据已经上传到CSDN资源频道,下载地址:http://download.csdn.net/detail/chaijunkun/4067684,不要资源分哦!)通过按行读取文件中的内容模拟Web应用各客户端发来的数据,然后将它们存储到MongoDB中;
输出部分将实现一个按条件查询,从MongoDB中得到的查询结果将通过控制台输出。这样就能模拟Web应用服务端响应请求,将数据推送到客户端页面的场景了。
(特别注意:本文中设计到的所有源代码都是UTF-8格式编码的)
先实现一个连接属性的配置
?
public class MongoDBConnConfig { //MongoDB主机名称或IP public static final String SERVER= "localhost"; //MongoDB端口 public static final int PORT= 27017; //使用的数据库名称 public static final String ORDERS_DATABASE= "orders"; }
? ? ?再实现一个Morphia框架与MongoDB的集成方法
/** * MongoDB联合Morphia框架生成DataStore的类 * */ public class MongoDBDataStore { /** * 生成Orders数据库Datastore对象 * @return 返回Datastore对象 发生异常返回为null */ public static Datastore getOrdersInstance(){ Mongo connection = null; try { connection = new Mongo(MongoDBConnConfig.SERVER, MongoDBConnConfig.PORT); } catch (UnknownHostException e) { return null; } catch (MongoException e) { return null; } Morphia morphia= new Morphia(); return morp