MongoDB рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝-рдЙрдиреНрдореБрдЦ NoSQL DBMS рд╣реИ рдЬрд┐рд╕реЗ рддрд╛рд▓рд┐рдХрд╛ рд╕реНрдХреАрдорд╛ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдк
рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ
ред рд╕рд╛рдЗрдЯ , рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдПрдХ рдЬрд╛рд╡рд╛ рдИрдИ 6 рдЖрд╡реЗрджрди рдореЗрдВ MongoDB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред
рд╣рдо рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЖрд╡реЗрджрди рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ MongoDB рдореЗрдВ рдЪрдпрди - рд╕рдВрдЪрд╛рд▓рди рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред NetBeans 7.0 рдФрд░ GlassFish рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕реНрдерд╛рдкрдирд╛
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
рдпрд╣рд╛рдВ рд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдордВрдЪ рдХреЗ рд▓рд┐рдП MongoDB рдбрд╛рдЙрдирд▓реЛрдб
рдХрд░реЗрдВ ред
рдлрд┐рд░ рд╣рдо рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд┐рди рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ mongod.exe рдЪрд▓рд╛рдПрдБред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ / рдбреЗрдЯрд╛ / рдбреАрдмреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп, рдЖрдк рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдлрд╝реЛрд▓реНрдбрд░ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ
--dbpath [рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо] рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрдорд╛рдг
NetBeans рдореЗрдВ, рд╣рдо рдПрдХ WebApplication Project рдмрдирд╛рддреЗ рд╣реИрдВред рд╣рдо рдЧреНрд▓рд╛рд╕рдлрд┐рд╢ рд╕рд░реНрд╡рд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╛рд╡рд╛ рдИрдИрдИ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд╡рд╛ рдИрдИ 6 рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛,
рдХреЙрдиреНрдЯреЗрдХреНрдЯреНрд╕ рдФрд░ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдЗрдВрдЬреЗрдХреНрд╢рди рдЖрдЗрдЯрдо рдХреЛ
рд╕рдХреНрд╖рдо рдХрд░реЗрдВ рдФрд░ рдЬрд╛рд╡рд╛рд╕реЗрд╡рд░ рдлреЗрд╕реЗрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рдЬреЛрдбрд╝реЗрдВред
MongoDB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
MongoDB Java рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдХреЛрдб
рдЖрд╡реЗрджрди рдкреБрд╕реНрддрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред рдкреБрд╕реНрддрдХ рд╡рд░реНрдЧ рдмрдирд╛рдПрдБ:
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;
рдпрд╣рд╛рдБ, toDBObject рдФрд░ fromDBObject рддрд░реАрдХреЗ рдмреБрдХ рдХреНрд▓рд╛рд╕ рд╕реЗ DBObject рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рд░реВрдкрд╛рдВрддрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
DBObject рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ рдЬреЛ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЛ
рдПрдирдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ BasicDBObject рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпрд╣рд╛рдБ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рдо рд╕рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рд╡рд╛рд▓реЗ рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рдмреАрди рднреА рдмрдирд╛рддреЗ рд╣реИрдВ:
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 рд╕рдВрдЧреНрд░рд╣ рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЧреЗрдЯрдмреБрдХ рд╡рд┐рдзрд┐ рдореЗрдВ рдЦреЛрдЬ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдкреБрд╕реНрддрдХреЛрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд SQL рдХреНрд╡реЗрд░реА * рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдЦреЛрдЬ рд╡рд┐рдзрд┐ рдПрдХ 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" рдкреГрд╖реНрда рдкрд░ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рднреА рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
рд╕рдВрджрд░реНрдн