MongoDB 數據庫 Java 版驅動:Morphia的使用

jopen 10年前發布 | 34K 次閱讀 Morphia 持久層框架

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);  

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!