MongoDB 数据库 Java 版驱动:Morphia的使用
jopen
10年前
Morphia是一个开放源代码的对象关系映射框架,它对MongoDB数据库 java版驱
动进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵MongoDB数据库,也让Java程序员可以从复杂数据库设计中脱离出来,从而将更多的精力投入到业务逻辑中去。Morphia是一个轻量级的类型安全的Java对象to/from MongoDB 库,具有以下特征:
- 它易于使用,而且非常轻巧,每种类型使用一次反射。
- 数据存储(DataStore)和 DAO<T,V> 访问抽象,或自己实现...
- 使用运行时验证的类型安全(Type-safe)和 Fluent 查询(Query) 支持
- 基于注解的行为映射,无XML文件
- 扩展: Validation(jsr303) ,以及SLF4J日志
- 生命周期方法/事件(Lifecycle Method/Event)支持
- 可与Guice、Spring和其它DI框架很好整合或协作
- 很多扩展点(新的注解,转换器,行为映射,日志等)
- 不存储Null/Empty值(默认)
- GWT支持(实体仅为POJO) - (GWT忽略注释)
- 允许原始类型、void toObject(DBObject) 或DBObject fromObject(Object) fromObject的高级映射器
Morphia配合mongoDB就如同Hibernate配合关系型数据库.所以可以认为Morphia在MongoDB的基础上面调用mongoDB的语法.
在java中直接调用Morphia的api会显得比较简单快捷.
1.加入mongoDB和Morphia的Jar包.
//创建连接源 Mongo mongo = null; try { mongo = new Mongo(); } catch (UnknownHostException e) { e.printStackTrace(); } Morphia morphia = new Morphia(); Datastore ds = morphia.createDatastore(mongo, "test"); //查找 for(User user:ds.find(User.class, "password", "admin")){ System.out.println(user); } System.out.println(ds.find(User.class, "password", "admin").get()); //插入 User user1 = new User("00018", "hello1", "hello1"); User user2 = new User("00019", "hello2", "hello2"); List<User> list = new ArrayList<>(); list.add(user1); list.add(user2); ds.save(list); // 修改 Query<User> query = ds.createQuery(User.class).field("uid").equal("00013"); UpdateOperations<User> uo = ds.createUpdateOperations(User.class).set("password", "IDONTKONW").set("userName", "IDONTKONW"); ds.update(query, uo); /** * 删除 * */ // ds.delete(User.class, "00018"); Query<User> query = ds.createQuery(User.class).field("userName").contains("t"); ds.delete(query);