Движок приложения со структурой данных Objectify - PullRequest
1 голос
/ 29 октября 2011

Действительно как objectify, хотя все еще борется с тем, что является лучшим способом структурировать мои данные в моем приложении.Я буду запускать новое приложение в ближайшее время и не хочу зацикливаться на структуре, которая может работать неправильно или работать очень медленно.

Приложение будет на HRD и будет иметь большое количествотипы сущностей.Для наглядности приведу несколько примеров сущностей.Предположим, приложение для ресторанов быстрого питания.Каждая цепочка будет сущностью (например, McDonalds, Wendy's и т. Д.).Каждая конкретная франшиза или место будет также юридическим лицом.Сотрудники, Заказы, Меню, Расписания и т. Д. Также будут сущностями.

Наверное, самый главный вопрос - как настроить отношения между этими сущностями?Я храню отношения, храня идентификатор хранилища данных как длинный в каждой сущности.Например, каждая сущность сотрудника будет иметь длинное значение, которое является идентификатором хранилища данных для местоположения, в котором они работают, а также для какой цепочки они являются членами.

С этой структурой я могу запросить все заказы из определенного ресторана с помощью следующего предложения:

  Long restaurantId =restaurant.getId();
  Query<Order> q=ofy.query(Order.class).filter("location", resturantId);

Просто любопытно, есть ли какие-либо проблемы с использованием хранилища данных / objectify втаким образом.Любой вклад был бы великолепен!Я использовал что-то подобное в небольшом масштабе и, кажется, работает нормально.В идеале я хотел бы получить наиболее эффективную структуру, и я понимаю, что это может занять некоторое тестирование.Однако после того, как приложение будет развернуто, его будет очень сложно изменить ...

@Entity
public class Chain {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  private String name;
  private String type;

  //getters & setters, etc
  }

@Entity
public class Location {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  private Long chain;  //which resturant chain the location belongs to (mcdonalds, wendy's,     etc)

  private String address;
  private String owner;
  private String phoneNumber;

  //getters & setters, etc
  }

@Entity
public class Employee {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  private Long location;  //which location the employee works for
  private Long chain;  //which resturant chain the location belongs to (mcdonalds, wendy's,     etc)

  private String name;
  private String position;

  //getters & setters, etc
  }

@Entity
public class Order {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  private Long chain;  //which resturant chain the location belongs to (mcdonalds, wendy's,     etc)
  private Long location;
  private Long employee; //employee that took order

  private Order order;
  private String time;

   //getters & setters, etc
   }

Ответы [ 2 ]

3 голосов
/ 29 октября 2011

Это стандартная практика. Иди вперед!

Objectify великолепен - мы использовали его около 6 месяцев, и мы очень довольны.

0 голосов
/ 27 апреля 2016

Key<Object> - это безопасный тип, Long - нет. Использование Long не рекомендуется в документации.

Ссылка: https://github.com/objectify/objectify/wiki/Entities#relationships

Я бы посоветовал вам прочитать всю эту страницу, оно того стоит. Теперь у меня есть типобезопасная структура, использующая Ref<Object> везде.

...