`
eason.xp.yu
  • 浏览: 2504 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java开源mongodb orm框架

阅读更多

背景

    公司之前要做一个互联网产品,由于产品的特性,决定使用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

    

分享到:
评论

相关推荐

    基于Java的ORM框架Mongodb-ORM.zip

    mongodb-orm简介Mongodb ORM是基于java的ORM框架,简化了SDK的使用,使代码变得更清晰、简单。 与Ibatis类似,将查询、执行语句封装在xml中,与代码隔离。简称MQL。 项目中使用加入mongodb orm的支持包1. 添加jar...

    基于mongodb官方Java驱动的orm框架,允许子类嵌套.zip

    这个压缩包“基于mongodb官方Java驱动的orm框架,允许子类嵌套.zip”显然是一个ORM(对象关系映射)框架,旨在简化Java应用与MongoDB之间的数据操作,特别是支持子类的嵌套结构。 ORM框架允许开发者用面向对象的...

    跨数据库的ORM框架JugglingDB.zip

    JugglingDB 是一个跨数据库的 ORM 框架,提供了访问大多数数据库的通用接口,支持包括:mysql, mongodb, redis, neo4j and js-memory-storage. 你可扩展其他数据库的适配器,支持回调和钩子。 示例代码: var ...

    Java 开源聊天室

    2. JDBC或ORM框架:Java Database Connectivity (JDBC)是Java访问数据库的标准接口,而Hibernate或MyBatis等ORM框架则简化了数据库操作。 五、消息序列化 1. JSON:JSON(JavaScript Object Notation)是一种轻量级...

    java-opensource-doc开源项目中文文档合集

    - **Hibernate**:Hibernate是另一个流行的ORM框架,它简化了Java与数据库之间的交互,文档可能包含实体管理、查询语言(HQL)和缓存机制等。 3. **Web开发** - **Servlet和JSP**:作为Java Web开发的基础,...

    sagacity-sqltoy:基于Java语言比mybatis更实用的orm框架,支持mysql,oracle,postgresql,sqlserver,db2,dm,mongodb,elasticsearch,tidb,guassdb,kingbase,oceanbase,greenplum

    sql插件已经停止更新)合作与开放欢迎开放者参与到sqltoy的开发和维护中来,可以加入QQ群替换加入sqltoy开发者行列sqltoy希望可以捐赠给开源组织和企业,希望共同发展成拥有中国智慧,面向更广泛的用户的ORM框架1....

    适用于java语言的MongoDB解决方案——Mongernate

    Mongernate是针对Java的MongoDB对象关系映射(ORM)框架,它提供了类似Hibernate的功能,使得开发者可以更方便地在Java应用中操作MongoDB。 Mongernate的核心功能包括: 1. 对象映射:Mongernate允许我们将Java...

    java8集合源码分析-spider-tangpoem:优雅的使用轻量级爬虫框架WebMagic

    java8 集合源码分析 spider-tangpoem项目 ...ORM框架 Morphia JUC:Java线程池、线程协作、线程安全类 日志log4j 1.7.25 Java反射 单例模式、工厂模式、代理模式 项目结构 biz包:包括页面爬取逻辑的

    springboot整合mongodb+redis+mybatis+mysql

    SpringBoot 整合 MySQL 通常使用 `spring-boot-starter-jdbc` 或 `spring-boot-starter-data-jpa` 依赖,其中 JPA(Java Persistence API)是 Java 提供的 ORM(对象关系映射)标准,可以方便地进行对象与数据库表...

    mongodb+spring+strust框架完整示例版本

    MongoDB 是一个文档型数据库,Spring 是一个全面的企业级应用开发框架,而 Struts 是一个用于构建 MVC(Model-View-Controller)架构的Java Web框架。接下来,我们将深入探讨这三个技术以及它们如何协同工作。 ...

    开源框架实战宝典电子书.zip

    《开源框架实战宝典》是一本深度探讨开源框架在实际项目中的应用与实践的专业书籍,旨在帮助读者理解和掌握各类开源框架的核心概念、架构设计以及在真实场景中的运用技巧。本书内容丰富,涵盖了从基础到高级的各类...

    Mina+Mongodb+Mybatis+数据库连接池实例

    它将MongoDB用于存储数据,MyBatis作为ORM工具,帮助将Java对象映射到数据库中的记录,而Proxool则用于管理数据库连接,提高性能和效率。这样的集成提供了灵活性和可扩展性,同时利用了各个组件的优势。 **详细知识...

    基于Java+JQuery+Bootstrap毕业设计管理系统.zip

    基于Java+JQuery+Bootstrap...ORM框架:morphia 模板:jsp 前端页面语言:HTML5 层叠样式表:CSS3 页面脚本语言:Javascript 页面框架:JQuery、Bootstrap 版本控制软件:Git 版本控制服务:Github IDE:Eclipse kepler

    spring等框架学习电子书

    Hibernate则是一个ORM框架,提供了Java对象与数据库之间的映射,使得数据库操作更加直观。 通过学习这些电子书,你不仅可以掌握Spring框架的精髓,还能理解如何将它与其他框架(如Struts和Hibernate)结合使用,以...

    JAVA 面试大全(包含java基础,框架等)

    11. **ORM框架** - Hibernate和MyBatis是两种流行的ORM(对象关系映射)框架,它们将数据库操作与Java对象模型相结合,简化了数据库访问。 12. **消息队列** - RabbitMQ、Kafka是消息中间件,用于解耦系统组件间...

    Java游戏服务器框架.zip

    7. **框架与库**:Java有许多优秀的开源框架可以帮助构建游戏服务器,如Netty(高性能的异步网络通信框架)、Spring Boot(简化应用开发)、Hibernate(ORM框架)等。它们可以简化开发过程,提高代码质量。 8. **...

    基于java的服务端JavaScript框架 RingoJS.zip

    RingoJS是一个强大的开源框架,它允许开发人员在Java平台上使用JavaScript进行服务器端开发。这个框架结合了Java的稳定性和JavaScript的灵活性,为开发者提供了一种高效、高性能的方式来构建Web应用。下面将详细介绍...

    MeyboMail Web(Java)开源简化.zip

    这需要熟悉JDBC(Java Database Connectivity)或者ORM(Object-Relational Mapping)框架如Hibernate或MyBatis来处理数据库操作。 4. **身份验证与授权**:为了保护用户账户安全,MeyboMail Web可能会实现用户登录...

    java开发常用软件、框架、数据库高清图标visio模具

    JDBC(Java Database Connectivity)是Java与数据库交互的标准接口,而ORM(对象关系映射)框架如Hibernate和MyBatis,则简化了对象与数据库表之间的映射关系。 “00JAVA常用软件图标.vssx”文件则是一个Visio模具...

    mongodb+spring+hibernate集成入门demo

    Hibernate 是一个流行的ORM框架,它允许Java开发者以对象的方式操作数据库,减少了直接使用SQL的复杂性。然而,由于MongoDB是非关系型数据库,Hibernate并不直接支持MongoDB。因此,我们需要使用Spring Data MongoDB...

Global site tag (gtag.js) - Google Analytics