Каждое ли базовое отношение данных должно иметь обратную сторону?

Ответ на этот вопрос дан, но для иллюстрации показана командная строка. Это работало для меня, когда я пытался как можно более простой тест подключиться к сетевому дерби.

  • Драйвер, загруженный в приложение с помощью: Class.forName ("org.apache.derby.jdbc. ClientDriver "). NewInstance ();
  • URL-адрес подключения:« jdbc: derby: // localhost: 1527 / myDB; create = true »
  • Я запустил приложение, используя: java -classpath derbyclient.jar :. myAppClass
147
задан Alex Reynolds 18 April 2009 в 20:23
поделиться

4 ответа

На практике у меня не было потери данных из-за отсутствия обратного - по крайней мере, я знаю из. Быстрый Google предлагает вам использовать их:

Обратные отношения не просто сделать вещи более аккуратными, это на самом деле используется Core Data для хранения данных целостность.

- Cocoa Dev Central

Обычно вы должны моделировать отношения в обоих направлениях, и указать обратные отношения соответственно. Базовые данные используют это информация для обеспечения согласованности графа объекта, если изменение сделано (см. «Управление отношениями и целостность графов объектов »). Для обсуждение некоторых причин, по которым Вы можете не моделировать отношения в обоих направлениях, и некоторые из проблем, которые могут возникнуть если нет, см. «Однонаправленный Отношения. ”

- Руководство по программированию основных данных

113
ответ дан 23 November 2019 в 22:29
поделиться

Лучший вопрос: «есть ли причина , чтобы не было обратного»? Core Data на самом деле является структурой управления графами объектов, а не структурой постоянства. Другими словами, его работа заключается в управлении отношениями между объектами в графе объектов. Обратные отношения делают это намного легче. По этой причине Core Data ожидает обратных связей и написана для этого варианта использования. Без них вам придется самостоятельно управлять согласованностью графов объектов. В частности, базовые данные с большой вероятностью могут повредить отношения ко многим без обратной связи, если вы не усердно работаете, чтобы все работало. Стоимость с точки зрения размера диска для обратных связей действительно незначительна по сравнению с выгодой, которую она вам приносит.

24
ответ дан 23 November 2019 в 22:29
поделиться

Нет никакой потребности в обратной связи обычно. Но существует немного причуд/ошибок в Базовых данных, где Вам нужна обратная связь. Существуют случаи, где отношения/объекты пропадают, даже при том, что нет никакой ошибки при сохранении контекста, если там пропускают обратную связь. Проверьте этот пример , который я создал для демонстрации того, чтобы избегать объектов и как к обходному решению при работе с Базовыми данными

0
ответ дан 23 November 2019 в 22:29
поделиться

Я перефразирую окончательный ответ, который я нашел в More iPhone 3 Development Дейва Марка и Джеффа ЛеМарша.

Apple обычно рекомендует всегда создавать и указывать обратную зависимость, даже если вы не используете обратную зависимость в своем приложении. По этой причине компания предупреждает вас, если вы не указали инверсию.

Отношения не обязаны иметь инверсию, потому что есть несколько сценариев, в которых инверсная связь может ухудшить производительность. Например, предположим, что инверсное отношение содержит чрезвычайно большое количество объектов. Удаление инверсии требует итераций над множеством, представляющим инверсию, что снижает производительность.

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

46
ответ дан 23 November 2019 в 22:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: