spring data MongoRepository浅谈应用


MongoRepository 是spring-data 里面针对MongoDB整合提供的一个简化与数据库交互,spring去除dao层的代码编写。spring-data包还提供了针对Hadoop、solr。当然对应的接口名字也是不同的。

spring Data能自动创建实体dao的实现类和自定义查询,不再需要我们自己去实现了。

公司项目是一个大型分布式 互联网接口服务。整改日志操作,转移接口压力。生产环境每天大概将近4-7G的日志文件。将日志不是重要性数据转移到MongoDB,来分减压力。

在整合过程中发现了spring -data MongoRepository接口

目录结构
spring data MongoRepository浅谈应用_第1张图片

MonitorRepository 继承MongoRepository接口
org.springframework.data.mongodb.repository.MongoRepository Serializable >

public interface MonitorRepository extends MongoRepository{
	
}
实体类 MonitorLog

package 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浅谈应用_第2张图片
单纯利用spring-data MongoRepository 接口 实现文件的查找存储

具体实现类可以在百度一下。我这里只是做了一个简单书写记录


具体技术资料可以查看一下 spring-data技术文档
点击打开链接 

你可能感兴趣的:(spring)