mongodb保存数据Java
来源:互联网 发布:企业网络规划案例 编辑:程序博客网 时间:2024/06/05 16:13
MongoDB有三种方法来保存java对象,一种是通过类实现DBObject接口,一种是利用spring-mongodb工具的对象映射功能,把java对象转换成MongoDB的BSON文档,一种是通过序列化类实例,转成二进制存储,MongoDB是支持二进制的数据格式的。下面分别介绍三种方法:
1.实现DBObject接口
用这种方法的话类还是个DBObject,存取对象属性都要用到put和get方法,感觉很不方便,这个我们可以参考官网的例子:
- public class Tweet implements DBObject {
- /* ... */
- }
可能大家已经发现,这种方法只适用于新的类,如果是原有的类这样做就不合适了。
2.使用spring-mongodb
关于spring-mongodb对象映射的使用,可以参考我之前的文章:Mongodb与spring集成(2)------实体映射 http://www.linuxidc.com/Linux/2012-06/61943p2.htm
使用spring-mongodb持久化对象有一个不好的地方就是它把目前还不支持把实体类的字段通过二进制的方式存储,而是把类中的字段都存储为字段的格式,如果一个类里面有其它封闭类作为属性,则从mongodb中读取时就要经过很多反射来映射到实体类上。为什么会有这样的需求呢?我是在把cas的ticket存储端换成mongodb时需要的,它有提供jpa的存储层,我们知道关系数据库中有种LOB的类型是用来存储二进制数据的,直接通过@LOB标注就可以,我觉得spring-mongodb也应该加个二进制存储的注解功能,有时间的话自己实现个。
3.序列化类实例,转成二进制存储
接下来就说一下通过二进制存储类的方法,以下均使用官方java客户端操作:
序列化存储,主要用到ObjectOutputStream:
- DBObject dbo = new BasicDBObject();
- ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
- ObjectOutputStream out = new ObjectOutputStream(outputStream);
- out.writeObject(yourJavaObject);
- dbo.put("JavaObject", outputStream.toByteArray());
- out.close();
- outputStream.close();
- collection.insert(dbo);
反序列化读取,主要用到ObjectInputStream:
- DBObject object = collection.findOne();
- byte[] javaObjectByte = (byte[]) object.get("JavaObject");
- InputStream inputStream = new ByteArrayInputStream(javaObjectByte);
- ObjectInputStream in = new ObjectInputStream(inputStream);
- JavaObject javaObject = (Service) in.readObject();
- in.close();
- inputStream.close();
- mongodb保存数据Java
- Java MongoDB 保存图片
- 【mongodb系统学习之九】mongodb保存数据
- Java链接mongodb数据
- Java and Mongodb 保存/读取java对象到/从mongodb
- Java -- 保存byte[] 数据
- Mongodb数据更新命令,Mongodb数据库保存命令,Mongodb数据库常用命令
- mongodb上传数据 java语言版
- 从万得下载A股数据保存到mongodb
- 读取通达信本地数据,并保存在mongodb数据库
- (案例五)将数据保存在MongoDB中
- kettle案例二抽取mysql数据保存到mongodb
- kettle案例三抽取json数据保存到mongodb
- java 保存unsigned 数据方法
- Java 数据保存与读取,保存数据信息并加密
- mongodb保存java对象的三种方法
- MongoDB保存Java对象的三种方法
- mongodb保存数据时,字段名带点号时保存会以子文档的形式保存
- iOS 后台给的加签字符串无法调用支付宝
- IntelliJ Idea配置jetty报错JMX
- 获取分组后取某字段最大的一条记录(求每个类别中最大的值的列表)
- java 设计模式—2
- 简单数据类型与表示范围
- mongodb保存数据Java
- Mac OS X 快速访问根目录的4种方法
- 结构体与数组的关系
- RabbitMQ和SQLAlchemy
- SQL语句注入的全过程
- Node.js生成图形验证码--captchapng/ccap/trek-captcha
- 端口
- 漏写@controller而出现404问题
- django连接数据库和静态资源配置