2014-02-18 2 views
0

В настоящее время я оцениваю GreenDAO для моего приложения. Я столкнулся со следующей проблемой.GreenDAO сгенерированные объекты/название пакета соглашение

Мое приложение состоит из нескольких модулей (разделенных в упаковках, например «com.example.app.results», «com.example.app.synchronization»). Некоторые из них не имеют зависимостей, некоторые из них имеют зависимости от других модулей (например, synchronization имеет зависимость от results, тогда как results не имеет зависимости).

То, что я хотел бы модель выглядит следующим образом:

Модуль results имеет Entity MyResult (атрибуты: имя, значение).

Модуль synchronization имеет объект MyResultSynchronization (атрибуты: MyResult (ссылка), дата).

final Schema schema = new Schema(1, "com.example.app"); 

final Entity myresult = schema.addEntity("results.MyResult"); 
final Property myresultId = myresult.addIdProperty().getProperty(); 
myresult.addStringProperty("name"); 
myresult.addStringProperty("value"); 

final Entity myResultSynchronization = schema.addEntity("synchronization.MyResultSynchronization"); 
myResultSynchronization.addIdProperty(); 
myResultSynchronization.addDateProperty("date"); 
myResultSynchronization.addToOne(myresult, myresultId); 

но - $entityPackage.$name не то, что я ожидал, что это делать (ни делал $package\$name ;-)).

Мой вопрос: Я вынужден иметь все сущности моего приложения в одном пакете? Я пытаюсь сделать это, создав несколько Schemas, но чем больше, возможно ли использовать функцию связи между двумя (или более) схемами? Каков «правильный» способ сделать это? (Есть ли один?)

ответ

2

Действительно, все объекты должны быть в одном пакете.

Обычно вы используете структуру, как

com.example.myapp.data 

Где вы положили все для управления базой данных, особенно классов сущностей. Внутри вы можете позволить greendao создать пакет dao, где он поместит все необходимое для доступа к вашим данным (базе).

Конечно, вы можете обеспечить соблюдение вашей схемы нанона, сделав несколько sxhemas в greendao. Но схемы будут независимыми: они не будут использовать одну и ту же базу данных, и вы не сможете связать их вместе с toOne(), например.

Если вы все еще хотите использовать свою схему именования, вы можете сгенерировать все до промежуточного пакета и вручную переместить их в нужные вам пакеты. Но вам придется повторять это при каждом изменении схемы базы данных, которая чаще всего может возникнуть вначале.

+0

Спасибо за разъяснение. Думаю, я поеду с несколькими схемами. Кажется, плохо для моего подхода;) Спасибо. – GeneSys

Смежные вопросы