Java EE 6でのMongoDBの使用





MongoDBは、テーブルスキーマの説明を必要としないドキュメント指向のNoSQL DBMSです。 彼女についての詳細はオフィスで知ることができます この記事では、Java EE 6アプリケーションでMongoDBを使用する例を説明します。



MongoDBでselect-insert操作を実装する小さなアプリケーションを作成します。 NetBeans 7.0およびGlassFishアプリケーションサーバーが使用されます。



設置


開始するには、特定のプラットフォーム用のMongoDBをこちらからダウンロードしてください

次に、サーバーを起動します。 これを行うには、binフォルダーからmongod.exeを実行します。 その前に、データを保存するためにデフォルトで使用される/ data / dbディレクトリを作成する必要があります。

サーバーを起動するときに、データを保存するための別のフォルダーを指定することもできます。そのためには、 -dbpath [フォルダー名]パラメーターを指定する必要があります。



プロジェクト作成


NetBeansでは、WebApplicationプロジェクトを作成します。 GlassFishサーバーを指定します。JavaEEバージョンはJava EE 6です。また、 Enable Contexts and Dependency Injectionアイテムを有効にして、JavaServer Facesフレームワークを追加します。



MongoDBを使用するには、 MongoDB Javaドライバーをプロジェクトに接続する必要があります。



コード


アプリケーションは、書籍のリストを保存および表示します。 Bookクラスを作成します。



import com.mongodb.BasicDBObject; import com.mongodb.DBObject; import javax.enterprise.inject.Model; import javax.validation.constraints.Size; @Model public class Book { @Size(min = 1, max = 20) private String name; @Size(min = 1, max = 20) private String author; @Size(min = 1, max = 20) private String language; private int year; //     public BasicDBObject toDBObject() { BasicDBObject document = new BasicDBObject(); document.put("name", name); document.put("year", year); document.put("language", language); document.put("author", author); return document; } public static Book fromDBObject(DBObject document) { Book b = new Book(); b.name = (String) document.get("name"); b.year = (Integer) document.get("year"); b.language = (String) document.get("language"); b.author = (String) document.get("author"); return b; } }
      
      





ここで、toDBObjectメソッドとfromDBObjectメソッドは、BookクラスからDBObjectへ、またはその逆への変換を提供します。 DBObjectは、データベースに保存できるキーと値のペアのセットをカプセル化するインターフェイスです。 このBasicDBObjectインターフェイスの実装がここで使用されます。



また、すべてのアプリケーションロジックを含むステートレスBeanを作成します。



 import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.Mongo; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; import javax.annotation.PostConstruct; import javax.ejb.Stateless; import javax.inject.Inject; import javax.inject.Named; @Stateless @Named public class BookSessionBean { @Inject Book book; private DBCollection bookCollection; @PostConstruct private void initDB() throws UnknownHostException { Mongo mongo = new Mongo(); DB db = mongo.getDB("booksDB"); bookCollection = db.getCollection("books"); if (bookCollection == null) { bookCollection = db.createCollection("books", null); } } public void createBook() { BasicDBObject doc = book.toDBObject(); bookCollection.insert(doc); } public List<Book> getBooks() { List<Book> books = new ArrayList<Book>(); DBCursor cursor = bookCollection.find(); while (cursor.hasNext()) { DBObject dbo = cursor.next(); books.add(Book.fromDBObject(dbo)); } return books; } }
      
      





データベースは、アノテーション@PostConstructを使用して「initDB」メソッドで初期化されます。

DBCollectionコレクションを使用すると、データベースを照会できます。 getBooksメソッドでfindメソッドを呼び出すことは、SQLクエリselect * from booksに相当します。 findメソッドはDBCursorカーソルを返します。これは、データベースクエリの結果に基づいて反復子として使用できます。



データを追加および表示するためのページを作成するためだけに残ります。 「index.xhtml」を次のように変更します。



 <h1> Add new book </h1> <h:form> Name: <h:inputText value="#{book.name}" size="20" /> <br/> Year: <h:inputText value="#{book.year}" size="6" /> <br/> Language: <h:inputText value="#{book.language}" size="20" /> <br/> Author: <h:inputText value="#{book.author}" size="20" /> <br/> <h:commandButton actionListener="#{bookSessionBean.createBook()}" action="show" title="Add" value="submit"/> </h:form>
      
      





また、「show.xhtml」ページを追加して、データベースのレコードを表示します。



 <h:form> <h:dataTable value="#{bookSessionBean.books}" var="b"> <h:column><f:facet name ="header">Name</f:facet>#{b.name}</h:column> <h:column><f:facet name ="header">Year</f:facet>#{b.year}</h:column> <h:column><f:facet name ="header">Language</f:facet>#{b.language}</h:column> <h:column><f:facet name ="header">Author</f:facet>#{b.author}</h:column> </h:dataTable> </h:form>
      
      





結果


プロジェクトを開始すると、メインページが表示されます。







フィールドに入力して送信ボタンをクリックすると、データベース内のすべてのレコードが表示される「show.xhtml」ページが表示されます。





参照資料





All Articles