- 浏览: 420756 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (269)
- 原创 (7)
- Java (51)
- Java Concurrency (2)
- IDE (16)
- Linux (46)
- Database (23)
- NoSQL (35)
- Web服务器 (23)
- Log日志 (11)
- HTTP (11)
- HTML (2)
- XML (1)
- Test (7)
- Mina (0)
- Amoeba (4)
- Cobar (1)
- 序列化 (2)
- Python (5)
- PHP (1)
- Socket通信 (1)
- Network (3)
- Struts (2)
- Web前端 (10)
- Maven (6)
- SVN (15)
- Json (1)
- XMPP (2)
- Go (1)
- Other (4)
- 未整理 (5)
最新评论
-
u012374672:
[color=darkred][/color][flash=2 ...
Mongo的ORM框架的学习Morphia(annotations) -
b_l_east:
很有问题啊
利用redis的transaction功能,实现分布式下加锁
转自:http://topmanopensource.iteye.com/blog/1449889
package com.easyway.morphia.mongodb.services; import org.bson.types.ObjectId; import com.easyway.morphia.mongodb.dao.IHotelDAO; import com.easyway.morphia.mongodb.model.Hotel; /** * * @Title: TODO * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company:易程科技股份有限公司 * @Date:2012-3-10 * @author * @version 1.0 */ public class HotelServiceImpl extends MongoBaseServiceImpl<Hotel, ObjectId> implements IHotelService { private IHotelDAO hotelDAO; public IHotelDAO getHotelDAO() { return hotelDAO; } public void setHotelDAO(IHotelDAO hotelDAO) { this.hotelDAO = hotelDAO; super.setBaseDao(hotelDAO); } }
package com.easyway.morphia.mongodb.services; import org.bson.types.ObjectId; import com.easyway.morphia.mongodb.model.Hotel; /** * * @Title: TODO * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company:易程科技股份有限公司 * @Date:2012-3-10 * @author * @version 1.0 */ public interface IHotelService extends IMongoBaseService<Hotel, ObjectId> { }
package com.easyway.morphia.mongodb.services; import com.google.code.morphia.Datastore; import com.google.code.morphia.Key; import com.google.code.morphia.query.Query; import com.google.code.morphia.query.QueryResults; /** * * @Title: TODO * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company:易程科技股份有限公司 * @Date:2012-3-10 * @author * @version 1.0 */ public interface IMongoBaseService<T, K> { public long count(); public long count(Query<T> q); public long count(String key, Object value) ; public void delete(T entity) ; public void deleteById(K id); public void deleteByQuery(Query<T> q) ; public boolean exists(Query<T> q); public boolean exists(String key, Object value) ; public QueryResults<T> find() ; public QueryResults<T> find(Query<T> q) ; public T findOne(Query<T> q) ; public T findOne(String key, Object value) ; public Key<T> save(T entity) ; public Datastore getDatastore(); public T get(K id) ; public Query<T> createQuery() ; }
package com.easyway.morphia.mongodb.services; import com.google.code.morphia.Datastore; import com.google.code.morphia.Key; import com.google.code.morphia.dao.DAO; import com.google.code.morphia.query.Query; import com.google.code.morphia.query.QueryResults; /** * * @Title: TODO * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company:易程科技股份有限公司 * @Date:2012-3-10 * @author * @version 1.0 */ public class MongoBaseServiceImpl<T, K> implements IMongoBaseService<T, K> { private DAO<T, K> baseDao; public long count() { return baseDao.count(); } public long count(Query<T> q) { return baseDao.count(q); } public long count(String key, Object value) { return baseDao.count(key, value); } public void delete(T entity) { baseDao.delete(entity); } public void deleteById(K id) { baseDao.deleteById(id); } public void deleteByQuery(Query<T> q) { baseDao.deleteByQuery(q); } public boolean exists(Query<T> q) { return baseDao.exists(q); } public boolean exists(String key, Object value) { return baseDao.exists(key, value); } public QueryResults<T> find() { return baseDao.find(); } public QueryResults<T> find(Query<T> q) { return baseDao.find(q); } public T findOne(Query<T> q) { return (T) baseDao.findOne(q); } public T findOne(String key, Object value) { return (T) baseDao.findOne(key, value); } public Key<T> save(T entity) { return baseDao.save(entity); } public DAO getBaseDao() { return baseDao; } public void setBaseDao(DAO baseDao) { this.baseDao = baseDao; } public Datastore getDatastore() { return baseDao.getDatastore(); } public T get(K id) { return (T) baseDao.get(id); } public Query<T> createQuery() { return baseDao.createQuery(); } }
Model:
package com.easyway.morphia.mongodb.model; import org.bson.types.ObjectId; import com.google.code.morphia.annotations.*; /** * * @Title: TODO * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company:易程科技股份有限公司 * @Date:2012-3-10 * @author * @version 1.0 */ @Entity public class Hotel { @Id private ObjectId oid; private String trackName; private String address; public ObjectId getOid() { return oid; } public void setOid(ObjectId oid) { this.oid = oid; } public String getTrackName() { return trackName; } public void setTrackName(String trackName) { this.trackName = trackName; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
Dao:
package com.easyway.morphia.mongodb.dao; import org.bson.types.ObjectId; import com.easyway.morphia.mongodb.model.Hotel; import com.google.code.morphia.dao.DAO; /** * * @Title: TODO * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company:易程科技股份有限公司 * @Date:2012-3-10 * @author * @version 1.0 */ public interface IHotelDAO extends DAO<Hotel, ObjectId> { }
package com.easyway.morphia.mongodb.dao; import org.bson.types.ObjectId; import com.easyway.morphia.mongodb.model.Hotel; import com.google.code.morphia.Datastore; import com.google.code.morphia.dao.BasicDAO; /** * * @Title: TODO * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company:易程科技股份有限公司 * @Date:2012-3-10 * @author * @version 1.0 */ public class HotelDAOImpl extends BasicDAO<Hotel, ObjectId> implements IHotelDAO { protected HotelDAOImpl(Datastore ds) { super(ds); } }
sping和morphia的扩展类:
package com.easyway.morphia.mongodb.ext; import org.springframework.beans.factory.config.AbstractFactoryBean; import org.springframework.util.StringUtils; import com.google.code.morphia.Datastore; import com.google.code.morphia.Morphia; import com.mongodb.Mongo; /** * * @Title: 通过扩展AbstractFactoryBean创建 DataStore的FactoryBean类 * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company:易程科技股份有限公司 * @Date:2012-3-3 * @author * @version 1.0 */ public class DataStoreFactoryBean extends AbstractFactoryBean<Datastore> { private Morphia morphia; private Mongo mongo; private String dbName; private String user; private String password; @Override public Class<?> getObjectType() { return Datastore.class; } @Override protected Datastore createInstance() throws Exception { if (StringUtils.hasText(user)) { return morphia.createDatastore(mongo, dbName, user, password.toCharArray()); } return morphia.createDatastore(mongo, dbName); } @Override public void afterPropertiesSet() throws Exception { super.afterPropertiesSet(); if (mongo == null) { throw new IllegalStateException("mongo is not set"); } if (morphia == null) { throw new IllegalStateException("morphia is not set"); } } public void setMorphia(Morphia morphia) { this.morphia = morphia; } public void setMongo(Mongo mongo) { this.mongo = mongo; } public void setDbName(String dbName) { this.dbName = dbName; } public void setUser(String user) { this.user = user; } public void setPassword(String password) { this.password = password; } }
package com.easyway.morphia.mongodb.ext; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.BeanCreationException; import org.springframework.beans.factory.config.AbstractFactoryBean; import com.mongodb.Mongo; import com.mongodb.MongoOptions; import com.mongodb.ServerAddress; /** * * @Title: 通过扩展AbstractFactoryBean创建 Mongo的FactoryBean类 * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company:易程科技股份有限公司 * @Date:2012-3-10 * @author * @version 1.0 */ public class MongoFactoryBean extends AbstractFactoryBean<Mongo> { private List<ServerAddress> replicaSetSeeds = new ArrayList<ServerAddress>(); private MongoOptions mongoOptions; @Override public Class<?> getObjectType() { return Mongo.class; } @Override protected Mongo createInstance() throws Exception { if (replicaSetSeeds.size() > 0) { if (mongoOptions != null) { return new Mongo(replicaSetSeeds, mongoOptions); } return new Mongo(replicaSetSeeds); } return new Mongo(); } public void setMultiAddress(String[] serverAddresses) { replSeeds(serverAddresses); } private void replSeeds(String... serverAddresses) { try { replicaSetSeeds.clear(); for (String addr : serverAddresses) { String[] a = addr.split(":"); String host = a[0]; if (a.length > 2) { throw new IllegalArgumentException("Invalid Server Address : " + addr); }else if(a.length == 2) { replicaSetSeeds.add(new ServerAddress(host, Integer.parseInt(a[1]))); }else{ replicaSetSeeds.add(new ServerAddress(host)); } } } catch (Exception e) { throw new BeanCreationException("Error while creating replicaSetAddresses",e); } } public void setAddress(String serverAddress) { replSeeds(serverAddress); } }
package com.easyway.morphia.mongodb.ext; import org.springframework.beans.factory.config.AbstractFactoryBean; import com.google.code.morphia.Morphia; /** * * @Title: 通过继承 AbstractFactoryBean<Morphia> 用来创建 Morphia的工厂bean * * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company:易程科技股份有限公司 * @Date:2012-3-3 * @author * @version 1.0 */ public class MorphiaFactoryBean extends AbstractFactoryBean<Morphia> { private String[] mapPackages; private String[] mapClasses; private boolean ignoreInvalidClasses; @Override public Class<?> getObjectType() { return Morphia.class; } @Override protected Morphia createInstance() throws Exception { Morphia m = new Morphia(); if (mapPackages != null) { for (String packageName : mapPackages) { m.mapPackage(packageName, ignoreInvalidClasses); } } if (mapClasses != null) { for (String entityClass : mapClasses) { m.map(Class.forName(entityClass)); } } return m; } public void setMapPackages(String[] mapPackages) { this.mapPackages = mapPackages; } public void setMapClasses(String[] mapClasses) { this.mapClasses = mapClasses; } public void setIgnoreInvalidClasses(boolean ignoreInvalidClasses) { this.ignoreInvalidClasses = ignoreInvalidClasses; } }
spring的配置如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd" default-autowire="byName"> <context:annotation-config /> <!-- 导入属性配置文件 --> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath*:Mongo-db.properties</value> </list> </property> </bean> <bean id="mongo" class="com.mongodb.Mongo"> <constructor-arg index="0"> <value>${mongo.db.host}</value> </constructor-arg> </bean> <bean id="morphia" class="com.easyway.mongodb.ext.MorphiaFactoryBean"> <property name="mapClasses"> <value>com.easyway.mongodb.model.Hotel</value> </property> </bean> <bean id="datastore" class="com.easyway.mongodb.ext.DataStoreFactoryBean" > <property name="morphia"> <ref bean="morphia"/> </property> <property name="mongo"> <ref bean="mongo"/> </property> <property name="dbName"> <value> ${mongo.db.databaseName} </value> </property> </bean> <bean id="hotelDAO" class="com.easyway.mongodb.dao.HotelDAO" > <constructor-arg index="0" > <ref bean="mongo"/> </constructor-arg> <constructor-arg index="1" > <ref bean="morphia"/> </constructor-arg> <constructor-arg index="2" > <value> ${mongo.db.databaseName} </value> </constructor-arg> </bean> </beans>
测试类如下:
package com.easyway.morphia.mongodb.app; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.easyway.morphia.mongodb.model.Hotel; import com.easyway.morphia.mongodb.services.IHotelService; /** * * @Title: TODO * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company:易程科技股份有限公司 * @Date:2012-3-10 * @author * @version 1.0 */ public class HotelApp { public static void main(String[] args) { ApplicationContext ctx=new ClassPathXmlApplicationContext("classpath:applicationContext-resource.xml"); IHotelService hotelSrv=(IHotelService)ctx.getBean("trackService"); Hotel hotel=new Hotel(); hotel.setAddress("Model 168地址 "); hotel.setTrackName("跟踪地址"); hotelSrv.save(hotel); } }
发表评论
-
mongodb 地理位置处理
2016-05-16 13:39 1387我只记录我用到的部分,没有完整分析mongodb对地理位置 ... -
Redis配置文件redis.conf
2014-11-14 14:10 1840# Redis configuration file ex ... -
Redis高可用部署及监控
2014-11-12 13:25 1077一、 Re ... -
JCS官方文档的简单笔记,仅供自己参考
2014-09-26 20:08 7501. 基本配置 jcs.default=DCjcs.de ... -
JCS基本配置
2014-09-26 19:39 9171、默认的内存缓存 ... -
NoSQL解决方案比较(MongoDB vs Redis, Tokyo Cabinet, and Berkeley DB)
2013-09-30 14:20 1312NoSQL解决方案比较 NoSQL Solution: E ... -
morphia与spring的整合
2012-12-07 15:06 1460转自: http://www.blogjava.net/wat ... -
Mongo的ORM框架的学习Morphia(十二) morphia的Query和Update
2012-12-07 15:06 1839转自:http://topmanopensource.itey ... -
Mongo的ORM框架的学习Morphia(十) morphia应用
2012-12-05 14:47 1434转自:http://topmanopensource.itey ... -
Mongo的ORM框架的学习Morphia(九) morphia简单使用
2012-12-05 14:44 1345转自 http://topmanopensource.itey ... -
Mongo的ORM框架的学习Morphia(八) morphia数据库访问接口
2012-12-05 14:35 1992转自:http://topmanopensource.itey ... -
Mongo的ORM框架的学习Morphia(annotations)
2012-12-05 14:33 2505一:@Entity的使用 @Entity ... -
Instagram的Redis实践(内存占用优化)
2012-11-30 10:43 1172转自:http://blog.nosqlfan.com/htm ... -
SQL 和Mongo 对比图表
2012-11-28 14:54 2180参看官方说明: http://www.mongodb ... -
MongoDB 入门指南、示例
2012-11-23 10:38 828转自:http://www.cnblogs.com/hoojo ... -
mongodb中使用MapReduce
2012-11-23 10:12 1190MapReduce函数的用法如下: db.users.ma ... -
python的redis用法
2012-11-22 15:48 1142#! /usr/bin/env python #coding ... -
Python连接redis
2012-11-22 15:46 5582一、Redis是流行的NOSQL内存数据库,以Key-Valu ... -
【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【redis分布式】
2012-08-29 10:42 1345转自 http://www.bwkeji.com/a/wang ... -
利用redis的transaction功能,实现分布式下加锁
2012-08-29 09:57 2346package memcached; import ja ...
相关推荐
Mongo的ORM框架的学习Morphia
spring MVC morphia mongo 整合的例子 网上下载的例子 自己调试保证绝对能运行
使用spring mvc + spring data mongodb + mongodb +spring 整合,支持html压缩,支持mongodb用户登录,重写了spring的MongoTemplate支持更多方式,重写MongoTemplate支持切换数据库,支持mongodb集群。spring版本为...
这工程项目为SpringMVC+spring4+hibernate3+mongo整合项目 不过注意的是: 使用mongo时,要确定下你的mongo服务版本。如果服务端是3.X的版本,你用2的客户端是用户密码是验证不通过的。所以需要选择对应的客户端。 ...
mongodb+spring+strust框架完整示例版本
Vue+axios+Spring Boot+mongoDB 基于Mongo图片存储和基于GridFS的文件存储.zip
spring-mongodb-morphia springdata-mongo morphia mongodb 学习
mongo-2.7.3.jar和morphia-0.99.jar
spring整合mongo的技术文档,挺好的。
希望让更多喜欢mongodb的开发爱好者们加入这个阵营,共同学习,共同提高,这个示例简单易用,导入即上手,哥们我也是费了段时间整合这个最新稳定版本的,采用的是springmvc3.14+spring_data_mongodb1.3.2+mongodb_...
mongo-2.8.0jar包以及spring整合的jar包
和博客对应的spring_mongo的例子。
基于mongodb+springmvc+maven环境搭建
这个压缩文件包含mongo-2.7.3.jar和morphia-0.99.jar是morphia框架必须的jar
使用spring mvc+maven操作mongo
ssm框架整合redis+mongodb实例,maven项目直接下载lib包。
主要给大家介绍了关于Spring + Spring Boot + MyBatis + MongoDB的整合教程,文中通过图文以及示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
java mongodb orm 实现-基于mongodb-driver开发的ORM
基于Maven+SSM整合shiro+Redis实现后台管理项目基于Maven+SSM整合shiro+Redis实现后台管理项目
软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备...