рдореЙрд░реНрдлрд┐рдпрд╛ - рдПрдиреЛрдЯреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд MongoDB рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдЯрд╡реЗрдЯ ORM

рдЕрдкрдиреЗ рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдкрджреЛрдВ рдХреЗ рдПрдХ рджреИрдирд┐рдХ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдкрдврд╝рддреЗ рд╣реБрдП, Google рд░реАрдбрд░ MongoDB рдХреЗ рд▓рд┐рдП рдПрдХ ORM рдкреЛрд╕реНрдЯ рдкрд░ рдЖрдпрд╛ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо "рдореЙрд░реНрдлрд┐рдпрд╛" рдерд╛ред рдиреАрдЪреЗ рдЖрдкрдХреЛ "рдмрд╣реБрдд рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЕрд╡рд▓реЛрдХрди" рдХреЗ рд╢реАрд░реНрд╖рдХ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рддреЗ рд╣реБрдП, рдЗрд╕рдХреЗ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд▓реЗрдЖрдЙрдЯ рдорд┐рд▓реЗрдЧрд╛ред

  1. рдореЙрд░реНрдлрд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдпрд╣ рдПрдХ рдЖрд╕рд╛рди рдФрд░ рддреЗрдЬ рдврд╛рдВрдЪрд╛ рд╣реИред
  2. рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рджреЛрдиреЛрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ POJO рд╡рд╕реНрддреБрдУрдВ рдФрд░ DAO рджреГрд╖реНрдЯрд┐рдХреЛрдг
  3. рд╕рдВрдкреВрд░реНрдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдПрдиреЛрдЯреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, XML рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  4. рд╡рд┐рд╕реНрддрд╛рд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рдорд░реНрдерд┐рдд рд╣реИ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ (jsr330) рдФрд░ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП SLF4J рд╕рдорд░реНрдерди
  5. Google Guice, Spring рдФрд░ рдЕрдиреНрдп DI рдЪреМрдЦрдЯреЗ рдХреЗ рд╕рд╛рде рдмрдврд╝рд┐рдпрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
  6. рдЗрд╕рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдмрд┐рдВрджреБ рд╣реИрдВ
  7. GWT рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ



рдореЙрд░реНрдлрд┐рдпрд╛ рдореЗрдВ рдПрдХ рдЗрдХрд╛рдИ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡рд░реНрдгрд┐рдд рд╣реИ:

@Entity("employees") class Employee { @Id ObjectId id; //  ,     String firstName, lastName; // ,      Long salary = null; //   -null  Address address; //       @Embedded (   ,    ) Key<Employee> manager; //      ... @Reference List<Employee> underlings = new ArrayList<Employee>(); //...     @Serialized EncryptedReviews; //       @Property("started") Date startDate; //  ... @Property("left") Date endDate; @Indexed boolean active = false; //...   @NotSaved String readButNotStored; //  ,   ... @Transient int notStored; //...     transient boolean stored = true; //   transient   // ,        @PostLoad void postLoad(DBObject dbObj) { ... } } 


рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 Morphia morphia = new Morphia(); db = new Mongo(); Datastore ds = morphia.createDatastore(db, appname, user, pass.toCharArray()); morphia.map(Employee.class); ds.save(new Employee("Mister", "GOD", null, 0)); //  ,     Employee boss = ds.find(Employee.class).field("manager").equal(null).get(); //   Key<Employee> scottsKey = ds.save(new Employee("Scott", "Hernandez", ds.getKey(boss), 150*1000)); //      ds.update(boss, ds.createUpdateOperations(Employee.class).add("underlings", scottsKey)); //    Employee scottsBoss = ds.find(Employee.class).filter("underlings", scottsKey).get(); for (Employee e : ds.find(Employee.class, "manager", boss)) print(e); 


рдзрд╛рд░рд╛рдкреНрд░рд╡рд╛рд╣ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдорд┐рдд рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

 Query q = ds.createQuery(MyEntity.class).filter("foo >", 12).filter("foo <", 30).order("dateAdded").offset(1000).retrievedFields(true, "foo"); //    MyEntity e = ds.find(MyEntity.class).field("name").equal("someName").get(); //     name = "someName"; List<Hotel> hotels = ds.find(Hotel.class, "stars >", 3).sort("-stars").asList(); 


DAO рд╢реИрд▓реА рдХрд╛ рдХрд╛рдо рдЙрджрд╛рд╣рд░рдг:

 public class HotelDAO extends BasicDAO<Hotel, String> { public HotelDAO(Morphia morphia, Mongo mongo ) { super(mongo, morphia, "myDB"); } public List<Hotel> findByTitle( String title ) { Pattern regExp = Pattern.compile(name + ".*", Pattern.CASE_INSENSITIVE); return ds.find(Hotel.class).filter("title", regExp).sort("title").asList(); } } HotelDAO hDAO = new HotelDAO(...); List<Hotel> hotels = hDAO.findByTitle("Luxury"); hDAO.save(new Hotel(...)); 


рд╕рдВрджрд░реНрдн:

Source: https://habr.com/ru/post/In118783/


All Articles