MongoRepository 是sPRing-data 里面针对MongoDB整合提供的一个简化与数据库交互,spring去除dao层的代码编写。spring-data包还提供了针对Hadoop、solr。当然对应的接口名字也是不同的。spring Data能自动创建实体dao的实现类和自定义查询,不再需要我们自己去实现了。公司项目是一个大型分布式 互联网接口服务。整改日志操作,转移接口压力。生产环境每天大概将近4-7G的日志文件。将日志不是重要性数据转移到MongoDB,来分减压力。在整合过程中发现了spring -data MongoRepository接口目录结构MonitorRepository 继承MongoRepository接口org.springframework.data.mongodb.repository.MongoRepository<T, Serializable>public interface MonitorRepository extends MongoRepository<MonitorLog, String>{ }实体类MonitorLogpackage com.sinosoft.ebusiness.mongo.model;import java.util.Date;import org.springframework.data.annotation.Id;import org.springframework.data.mongodb.core.index.Indexed;import org.springframework.data.mongodb.core.mapping.Document;/** * POJO类MonitorLog */@Document()//public class MonitorLog implements java.io.Serializable { private static final long serialVersionUID = 1L; /** 属性序列号(SerialNo) */ @Id private String serialNo; /** 属性用户名(UserName) */ private String userName; /** 属性ip地址(IPADD) */ private String ipadd; /** 属性日志时间(LogTime) */ private Date logTime; /** 属性应用系统(AppName) */ private String appName; /**属性交易码(TRANSRNO)*/ private String transrNo; /** 属性日志描述(Content) */ private String content; /** 属性备注(Remark) */ @Indexed private String remark; /** 日志级别*/ private String logGrade; public MonitorLog(String serialNo,String userName,String ipadd, Date logTime,String appName,String transNo,String content,String remark,String logGrade){ this.appName =appName; this.content = content; this.ipadd = ipadd; this.logGrade = logGrade; this.logTime = logTime; this.remark = remark; this.transrNo = transNo; this.userName = userName; } /** * 类Gemonitorbusinesslog的默认构造方法 */ public MonitorLog() { this.logTime = new Date(); } /** * 属性序列号(SerialNo)的getter方法 */ public String getSerialNo() { return this.serialNo; } /** * 属性序列号(SerialNo)的setter方法 */ public void setSerialNo(String serialNo) { this.serialNo = serialNo; } /** * 属性用户名(UserName)的getter方法 */ public String getUserName() { return this.userName; } /** * 属性用户名(UserName)的setter方法 */ public void setUserName(String userName) { this.userName = userName; } /** * 属性IP地址(IPADD)的getter方法 */ public String getIpadd() { return this.ipadd; } /** * 属性IP地址(IPADD)的setter方法 */ public void setIpadd(String ipadd) { this.ipadd = ipadd; } /** * 属性日志时间(LogTime)的getter方法 */ public Date getLogTime() { return this.logTime; } /** * 属性日志时间(LogTime)的setter方法 */ public void setLogTime(Date logTime) { this.logTime = logTime; } /** * 属性应用系统(AppName)的getter方法 */ public String getAppName() { return this.appName; } /** * 属性应用系统(AppName)的setter方法 */ public void setAppName(String appName) { this.appName = appName; } /** * 属性交易码(TRANSRNO)的getter方法 */ public String getTransrNo() { return transrNo; } /** * 属性交易码(TRANSRNO)的setter方法 */ public void setTransrNo(String transrNo) { this.transrNo = transrNo; } /** * 属性日志描述(Content)的getter方法 */ public String getContent() { return this.content; } /** * 属性日志描述(Content)的setter方法 */ public void setContent(String content) { this.content = content; } /** * 属性备注(Remark)的getter方法 */ public String getRemark() { return this.remark; } /** * 属性备注(Remark)的setter方法 */ public void setRemark(String remark) { this.remark = remark; } public String getLogGrade() { return logGrade; } public void setLogGrade(String logGrade) { this.logGrade = logGrade; } @Override public String toString() { return "MonitorBusinessLog [serialNo=" + serialNo + ", userName=" + userName + ", ipadd=" + ipadd + ", logTime=" + logTime + ", appName=" + appName + ", transrNo=" + transrNo + ", content=" + content + ", remark=" + remark + ", logGrade=" + logGrade + "]"; } }未定义实现类 只是定义了一下接口 测试用例package com.sinosoft.ebusiness.basic;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import org.springframework.context.ConfigurableapplicationContext;import org.springframework.context.support.FileSystemxmlApplicationContext;import org.springframework.data.domain.Page;import org.springframework.data.mongodb.core.MongoTemplate;import com.sinosoft.ebusiness.basic.model.MonitorBusinessLog;import com.sinosoft.ebusiness.mongo.basic.MonitorRepository;import com.sinosoft.ebusiness.mongo.model.MonitorLog;import com.sinosoft.ebusiness.mongo.service.face.MonitorBasicService;public class TestServer { public static void main(String[] args) { String[] configFiles = { "classpath*:spring/applicationContext-web.xml", "classpath*:spring/applicationContext-mongo.xml", "classpath*:spring/applicationContext-basic.xml", "classpath*:spring/applicationContext-jms.xml", "classpath*:spring/applicationContext-hibernate.xml" }; ConfigurableApplicationContext appContext; appContext = new FileSystemXmlApplicationContext(configFiles); final SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss:SSS"); //MonitorBasicService ud = (MonitorBasicService) appContext.getBean("monitorBasicService"); MonitorRepository monitorRepository = (MonitorRepository) appContext.getBean("monitorRepository"); //MongoTemplate mongo = (MongoTemplate) appContext.getBean("mongoTemplate"); long s = System.currentTimeMillis(); System.err.println(monitorRepository.findAll().size()+"============monitorRepository.count()"); System.out.println("毫秒:"+(System.currentTimeMillis() - s)); }}单纯利用spring-data MongoRepository 接口 实现文件的查找存储具体实现类可以在百度一下。我这里只是做了一个简单书写记录具体技术资料可以查看一下 spring-data技术文档点击打开链接
新闻热点
疑难解答