`

spring整合mongoDB-3

阅读更多
使用起来就简单了。

还有像executeCommand支持复杂操作的接口。

使用Criteria可以构造Query,支持大于、小于、in等查询条件,类似于Hibernate的Criteria。


@Service("myService")
public class TestService {
	private Logger log = Logger.getLogger(getClass());
	private MongoTemplate mongoTemplate;

	public List<User> findAll(String collectionName) {
		return mongoTemplate.findAll(User.class, collectionName);
	}

	public void save(String collectionName, List<User> items) {
		if (StringUtils.isNotEmpty(collectionName)) {
			mongoTemplate.dropCollection(collectionName);
			mongoTemplate.insert(items, collectionName);
		} else {
			log.error("name does not exist.");
		}
	}

	public void delete(String collectionName) {
		if (StringUtils.isNotEmpty(collectionName)) {
			mongoTemplate.dropCollection(collectionName);
		} else {
			log.error("name does not exist.");
		}
	}

	@Autowired
	public void setMongoTemplate(MongoTemplate mongoTemplate) {
		this.mongoTemplate = mongoTemplate;
	}
}



但是说实话,像涉及到DBObject、Query这样的接口,一般使用起来都比较麻烦,我之前使用Hibernate的Criteria很有感触,所以比较反感使用这些。

比如,有一个深层嵌套的关联,User-Org-Address-postcode。

要按邮编和电话筛选,要用and把两个eq连接起来,但是使用eq之前,你还得判断中间的Org,Address是否为空,否则你调xxx.xxx.xxx.getPostCode会抛空指针。

这样写出来的代码真像某地的护城河,又臭又长。

所以在类似的api里写复杂查询的缺点如下:

1、代码冗长,开发效率低下;
2、逻辑不直观,容易出错,不好维护;
3、复杂的查询性能不好。比如可能在mongoDB里不能使用索引。这是很多nosql产品本身的特点决定的。
4、复杂的查询很难做cache,不容易优化;
5、复杂的查询不容易复用;
6、复杂的查询很难移植。特别是如果有一天要转向K-V存储的时候。

分享到:
评论

相关推荐

    Spring-Data-MongoDB3.2

    **Spring Data MongoDB 3.2 整合指南** 在当今的软件开发中,Spring框架以其强大的功能和灵活性深受开发者喜爱,而MongoDB作为一款非关系型数据库,因其高性能、高可扩展性和灵活的数据模型,成为了大数据和实时...

    spring-data-mongodb-1.7.2.jar

    spring整合mongodb3.0的jar包,据说已经解决了最新用户验证的问题

    Spring3+Spring-data-mongodb1.5.6示例

    在本示例中,我们将深入探讨如何在Spring 3框架中集成Spring Data MongoDB 1.5.6,以便高效地处理MongoDB数据库。...通过学习这些示例,你可以更好地理解和掌握Spring 3与Spring Data MongoDB 1.5.6的整合技巧。

    dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redis, dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redis整合.zip

    dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redis, dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redis整合

    mongodb-spring 整合包

    当我们将MongoDB与Spring整合时,可以利用Spring的强大功能来简化MongoDB的使用,提高开发效率。本整合包正是针对这一需求而准备的,它包含了实现MongoDB与Spring集成所需的所有组件。 首先,我们需要了解MongoDB-...

    spring 整合mongodb

    总结,Spring整合MongoDB提供了强大的数据访问支持,通过简单的接口和注解,可以让开发者专注于业务逻辑,而不是底层数据库操作。在实际开发中,了解并熟练运用这些知识点,能显著提升开发效率和代码质量。

    spring-springMVC-mongodb整合例子

    总的来说,整合Spring、SpringMVC和MongoDB可以构建出一个高性能、可扩展的Web应用,充分利用MongoDB的灵活性处理非结构化数据,同时利用Spring的优秀特性简化开发流程。这个例子中的"spring-springMVC-mongodb整合...

    JAVA操作MongoDB之spring整合

    总结来说,"JAVA操作MongoDB之spring整合"涉及到的主要知识点包括:Spring Boot项目结构,MongoDB的配置和连接,Spring Data MongoDB的MongoRepository接口,以及如何在Controller层处理HTTP请求。通过这样的整合,...

    Spring整合MongoDB基于Maven

    **Spring整合MongoDB基于Maven** 在现代Java开发中,Spring框架与MongoDB数据库的集成是常见的选择,尤其是在处理非关系型数据时。MongoDB是一个高性能、无模式的文档型数据库,而Spring提供了强大的框架支持,使得...

    spring-mongodb-example:spring-mongodb-example

    spring-mongodb-example mongodb1.3.5.RELEASE spring 3.1.1整合示例。 修改mongo.properties里面的参数即可进行测试 包括主机地址ip;端口号;数据库 后续会推出其他版本

    dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redis:dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redis整合

    dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redisdubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redis整合#该项目介绍ROOT dubbo管理平台lidong-dubbo-api api模块lidong-dubbo-model model模块lidong-...

    springmvc-mongodb-maven结合

    在这个项目"springmvc-mongodb-maven结合"中,开发者整合了这三个工具来创建一个运行良好的Java Web应用。以下是关于这些技术及其结合使用的关键知识点: **SpringMVC**: SpringMVC是Spring框架的一个模块,专门...

    spring-mongodb整合源码 注释

    在项目中,你需要引入`mongodb-driver-sync`或`mongodb-driver-reactivestreams`的依赖,取决于你的应用是否使用了反应式编程。 2. **Spring Data MongoDB**:提供了Spring Bean定义和Repository接口,简化了数据...

    springboot整合mongodb+redis+mybatis+mysql

    SpringBoot 与 MongoDB 的整合主要通过 `spring-boot-starter-data-mongodb` 依赖实现,这使得我们能够轻松地进行 CRUD(创建、读取、更新、删除)操作。 Redis 是一个开源的、高性能的键值对数据存储系统,通常...

    源码-spring+MongoDB的整合

    3. **Repository接口**:Spring Data MongoDB的Repository接口允许我们定义操作MongoDB的定制方法,无需编写任何DAO层代码。例如,我们可以创建一个`MongoRepository`的子接口,定义`findAll()`、`findById()`等方法...

    spring-mongodb整合

    当我们谈论“Spring-MongoDB整合”时,这意味着我们要将Spring框架与MongoDB数据库集成,以便在Java应用中充分利用MongoDB的优势。 首先,我们需要理解Spring Data MongoDB项目,它是Spring Data模块的一部分,旨在...

    Spring-Mongodb例子

    3. **Document和MongoEntity**:在Spring MongoDB中,数据模型通常表示为`org.springframework.data.mongodb.core.mapping.Document`注解的类。这个注解告诉Spring如何将类映射到MongoDB的集合中。`@Id`注解用于指定...

    springboot-mongodb-mybatis-demo.zip

    本项目"springboot-mongodb-mybatis-demo"将这三个组件整合在一起,提供了一个完整的实例,旨在帮助开发者理解并掌握这三者之间的协同工作。 1. Springboot介绍: Springboot旨在简化Spring应用程序的初始搭建以及...

Global site tag (gtag.js) - Google Analytics