Постоянство Java, связь между сущностями БД и другими моделями - PullRequest
0 голосов
/ 10 ноября 2010

Я использую библиотеку постоянства TopLink с базой данных MySQL в моих приложениях Java.

Я разработал библиотеку классов, которая используется несколькими настольными приложениями, она содержит некоторые классы, специфичные для моегопроект.Классы связаны друг с другом, как правило, отношениями типа «один ко многим».

Я хочу, чтобы классы сущностей БД и классы, специфичные для проекта, были отдельными.

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

1 Ответ

2 голосов
/ 11 ноября 2010

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

Сначала определите модель со всеми необходимыми определениями.

скажем

        class person
{
        public PropertyChangeSupport propertyChange = new PropertyChangeSupport(this);

        private String firstName;
        private String middleName;
        private String lastName;
        private int gender;
        private Integer age;
        .
        .

        set Fname(String firstName)
        {
                      propertyChangeSupport.firePropertyChange("firstName",this.firstName,this.firstName         = firstName);
        }
        .
        .
        .
        public void setPropertyChange(PropertyChangeSupport propertyChange) {
                this.propertyChange = propertyChange;
        }


         public PropertyChangeSupport getPropertyChange() {
                return propertyChange;
         }

        public void removePropertyChangeListener(PropertyChangeListener listener) {
        propertyChange.removePropertyChangeListener(listener);
        }

}

Теперь нам нужен поставщик модели, который будет одноэлементным.

class PersonMOdelProvider
{

private static List<Person> lst ;
private static PersonMOdelProvider content;
private PersonMOdelProvider()
{
  // Get data from data base layer.
  lst = new ArrayList<Person>();
  //load the list from database
}

public static PersonModelProvider getInstance()
{
 if (content!=null) return content;
content = new PersonMOdelProvider();
return content;
}

.
.
.
set ... get methods for binding db with model. 

}

Теперь в части пользовательского интерфейса сначала нужно получить экземпляр поставщика модели и передать все дальнейшее взаимодействие через поставщика модели.

...