Наложение существующего графа объекта? - PullRequest
2 голосов
/ 13 августа 2011

У меня есть база данных, которая содержит граф объектов. Тем не менее, во время использования объектов, содержащихся в базе данных, мне нужно добавить дополнительные функции.

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

public class Foo() {
    private DBFoo databaseFoo;

    // a bunch of forwarding methods to databaseFoo
    // some methods for additional functionality
}

Я борюсь с хорошим шаблоном для построения моих объектов-оболочек поверх существующего графа объектов базы данных. В частности, как восстановить мой граф объектов для зеркалирования графа в базе данных (со всеми его различными ссылками на другие объекты). У кого-нибудь есть опыт решения подобных проблем?

1 Ответ

0 голосов
/ 24 августа 2011

Здесь я вижу две проблемы:

а). Учитывая некоторый dbClassA, который ссылается на dbClassB и коллекции dbClassC, с dbClassB и dbClassC, каждый из которых является произвольно сложным: какой дизайн прокси подходит? Если dbClassA имеет методы

 dbClassB getB() { ... }

мы можем довольно легко увидеть отображение на

 myClassB getB() { return new myClassB( theDbClassB.getB() ); }

или что-то подобное. Но что именно мы делаем с коллекциями?

 List<dbClassC> getAllCs() {  } 

что это становится?

Я полагаю, что это решаемая проблема, просто вопрос выбора некоторых правил.

Я подозреваю, что вас больше беспокоит:

б). Создание всех этих прокси-классов. Примените выбранное правило ко многим, многим классам. Одним из возможных подходов является использование возможностей генератора кода, например JET в Eclipse . Я видел очень хорошее использование этой возможности для подобных проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...