背景
公司之前要做一个互联网产品,由于产品的特性,决定使用NoSQL数据库mongodb作为底层存储。
在项目进入开发阶段时,发现使用mongodb的java driver是件非常头疼的事。像当年写jdbc一样,拼写查询条件,结果集转换。业务逻辑里就出现了很多重复的代码使得项目整体变得臃肿。
在网上找了一些开源的orm框架,包括Morphia。确实简化了很多代码,与driver的sdk也进行了隔离,不过用起来还是感觉不太方便,operater都封装成了方法,却没有覆盖所有的。还有就是还是跟driver的使用一样,数据库的操作全部写在代码里了,假如要修改一个查询操作的状态值我必须修改代码重新编译。
最后决定自己写一个简单的类似ibatis的框架,只需要满足当前业务的需求即可,于是在接下来的三周都挤一些时间来完成这个部分。结果比预期的要好,同事在使用的时候也都比较认可,便采用到了各个项目中。
由于当时时间有限,与的比较快,总体结构不是很好,现在整理出来方便以后可以使用。与其他ORM框架不一样的地方是所有的数据库操作都是在配置文件中的,可以很方便的维护配置文件。
Mongodb-orm 代码托管在github上 https://github.com/yuxiangping/mongodb-orm 有兴趣的可以看看。
介绍一下项目中的使用
1. 使用时加入该jar包依赖
2. 使用spring实例化
<bean id="mongoTemplet" class="com.mongodb.client.MongoClientTemplet"> <property name="factory"> <bean class="com.mongodb.client.MongoORMFactoryBean"> <property name="dataSource"> <bean class="com.mongodb.client.MongoDataSource"> <property name="nodeList" value="192.168.1.0:80,192.168.1.1:8080,192.168.1.2:80" /> <property name="dbName" value="yourDBName" /> <property name="userName" value="userName" /> <property name="passWord" value="passWord" /> <!-- 以下为可选参数 --> <property name="connectionsPerHost" value="" /> <property name="threadsAllowedToBlock" value="" /> <property name="connectionTimeOut" value="" /> <property name="maxRetryTime" value="" /> <property name="socketTimeOut" value="" /> </bean> </property> <property name="configLocations"> <list> <value>classpath:mql/model1-mql.xml</value> <value>classpath:mql/model2-mql.xml</value> </list> </property> </bean> </property> </bean>
也可以使用代码进行实例化
3. 代码中使用MongoTemplet即可实现对数据库的操作。
public class MongoORMTest { private MongoTemplet templet; public Model findOne() { String id = "xxxxx"; return templet.findOne("findByID", id); } public List<Model> findList() { Map parameter = new HashMap(); parameter.put("status", 1); int skip = 0; int limit = 20; return templet.find("findList", parameter, limit, skip); } public String insert() { Model model = new Model(); model.setName("xxxxx"); model.setTime(System.currentTimeMillis()); return templet.insert("insert", model); } public void update() { Map parameter = new HashMap(); parameter.put("time", 1); parameter.put("status", 1); templet.update("update", parameter); } }
MongoTemplet根据用户指定的statement找到配置文件并执行。
上面示例中的代码需要以下的配置文件支持
<mql> <mapping id="model" class="test.mongodborm.Model"> <property column="_id" name="id" /> <property column="name" name="name" /> <property column="time" name="time" value="0" /> <property column="status" name="status" /> </mapping> <select id="findByID" collection="test_sample"> <query class="java.lang.String"> <property column="_id" name="${value}" type="objectid"/> </query> <field mapping="model" /> </select> <select id="findList" collection="test_sample"> <query class="java.util.Map"> <property column="status" name="status"> </query> <field mapping="model" /> </select> <insert id="insert" collection="test_sample"> <document mapping="model" /> </insert> <update id="update" collection="test_sample"> <query class="java.util.Map"> <property column="time" operate="gte" name="time"/> </query> <action class="java.util.Map"> <property column="status" operate="set" name="status" /> </action> </update> </mql>
完成以上步骤就可以在项目中进行使用了。更多的用法及支持可以访问 github
相关推荐
mongodb-orm简介Mongodb ORM是基于java的ORM框架,简化了SDK的使用,使代码变得更清晰、简单。 与Ibatis类似,将查询、执行语句封装在xml中,与代码隔离。简称MQL。 项目中使用加入mongodb orm的支持包1. 添加jar...
这个压缩包“基于mongodb官方Java驱动的orm框架,允许子类嵌套.zip”显然是一个ORM(对象关系映射)框架,旨在简化Java应用与MongoDB之间的数据操作,特别是支持子类的嵌套结构。 ORM框架允许开发者用面向对象的...
JugglingDB 是一个跨数据库的 ORM 框架,提供了访问大多数数据库的通用接口,支持包括:mysql, mongodb, redis, neo4j and js-memory-storage. 你可扩展其他数据库的适配器,支持回调和钩子。 示例代码: var ...
2. JDBC或ORM框架:Java Database Connectivity (JDBC)是Java访问数据库的标准接口,而Hibernate或MyBatis等ORM框架则简化了数据库操作。 五、消息序列化 1. JSON:JSON(JavaScript Object Notation)是一种轻量级...
- **Hibernate**:Hibernate是另一个流行的ORM框架,它简化了Java与数据库之间的交互,文档可能包含实体管理、查询语言(HQL)和缓存机制等。 3. **Web开发** - **Servlet和JSP**:作为Java Web开发的基础,...
sql插件已经停止更新)合作与开放欢迎开放者参与到sqltoy的开发和维护中来,可以加入QQ群替换加入sqltoy开发者行列sqltoy希望可以捐赠给开源组织和企业,希望共同发展成拥有中国智慧,面向更广泛的用户的ORM框架1....
Mongernate是针对Java的MongoDB对象关系映射(ORM)框架,它提供了类似Hibernate的功能,使得开发者可以更方便地在Java应用中操作MongoDB。 Mongernate的核心功能包括: 1. 对象映射:Mongernate允许我们将Java...
java8 集合源码分析 spider-tangpoem项目 ...ORM框架 Morphia JUC:Java线程池、线程协作、线程安全类 日志log4j 1.7.25 Java反射 单例模式、工厂模式、代理模式 项目结构 biz包:包括页面爬取逻辑的
SpringBoot 整合 MySQL 通常使用 `spring-boot-starter-jdbc` 或 `spring-boot-starter-data-jpa` 依赖,其中 JPA(Java Persistence API)是 Java 提供的 ORM(对象关系映射)标准,可以方便地进行对象与数据库表...
MongoDB 是一个文档型数据库,Spring 是一个全面的企业级应用开发框架,而 Struts 是一个用于构建 MVC(Model-View-Controller)架构的Java Web框架。接下来,我们将深入探讨这三个技术以及它们如何协同工作。 ...
《开源框架实战宝典》是一本深度探讨开源框架在实际项目中的应用与实践的专业书籍,旨在帮助读者理解和掌握各类开源框架的核心概念、架构设计以及在真实场景中的运用技巧。本书内容丰富,涵盖了从基础到高级的各类...
它将MongoDB用于存储数据,MyBatis作为ORM工具,帮助将Java对象映射到数据库中的记录,而Proxool则用于管理数据库连接,提高性能和效率。这样的集成提供了灵活性和可扩展性,同时利用了各个组件的优势。 **详细知识...
基于Java+JQuery+Bootstrap...ORM框架:morphia 模板:jsp 前端页面语言:HTML5 层叠样式表:CSS3 页面脚本语言:Javascript 页面框架:JQuery、Bootstrap 版本控制软件:Git 版本控制服务:Github IDE:Eclipse kepler
Hibernate则是一个ORM框架,提供了Java对象与数据库之间的映射,使得数据库操作更加直观。 通过学习这些电子书,你不仅可以掌握Spring框架的精髓,还能理解如何将它与其他框架(如Struts和Hibernate)结合使用,以...
11. **ORM框架** - Hibernate和MyBatis是两种流行的ORM(对象关系映射)框架,它们将数据库操作与Java对象模型相结合,简化了数据库访问。 12. **消息队列** - RabbitMQ、Kafka是消息中间件,用于解耦系统组件间...
7. **框架与库**:Java有许多优秀的开源框架可以帮助构建游戏服务器,如Netty(高性能的异步网络通信框架)、Spring Boot(简化应用开发)、Hibernate(ORM框架)等。它们可以简化开发过程,提高代码质量。 8. **...
RingoJS是一个强大的开源框架,它允许开发人员在Java平台上使用JavaScript进行服务器端开发。这个框架结合了Java的稳定性和JavaScript的灵活性,为开发者提供了一种高效、高性能的方式来构建Web应用。下面将详细介绍...
这需要熟悉JDBC(Java Database Connectivity)或者ORM(Object-Relational Mapping)框架如Hibernate或MyBatis来处理数据库操作。 4. **身份验证与授权**:为了保护用户账户安全,MeyboMail Web可能会实现用户登录...
JDBC(Java Database Connectivity)是Java与数据库交互的标准接口,而ORM(对象关系映射)框架如Hibernate和MyBatis,则简化了对象与数据库表之间的映射关系。 “00JAVA常用软件图标.vssx”文件则是一个Visio模具...
Hibernate 是一个流行的ORM框架,它允许Java开发者以对象的方式操作数据库,减少了直接使用SQL的复杂性。然而,由于MongoDB是非关系型数据库,Hibernate并不直接支持MongoDB。因此,我们需要使用Spring Data MongoDB...