EMF = платформа моделирования Eclipse
Я должен использовать EMF в одном из моих проектов класса. Я пытаюсь понять, как использовать EMF, чтобы сделать следующее:
Я должен сделать все то использование: EMF (никакая идея, что поэтому когда-либо) и (СДЕЛАННЫЙ) JPA.
Я использовал JAXB, и я знаю, это может быть сделано с помощью JAXB, но как (EMF == JAXB)?!
Я создал много классов Java с помощью EMF, но существуют столь многие из них! Где я реализую методы чтения-записи и как я выполняю проект EMF?
Спасибо
ПОДСКАЗКА UPDATE1 http://www.eclipsezone.com/eclipse/forums/t58829.html
UPDATE2
У меня есть схема, и я сгенерировал типовой код с помощью .xsd. Теперь у меня есть проблема в чтении данных с XML-файла.
Обычный способ сделать это - начать с схемы XML, затем использовать ее для генерации модели EMF, а затем сгенерировать код Java. Это описано в этом руководстве по EMF .
Вам не нужно реализовывать методы чтения / записи. Вместо этого вы используете код библиотеки EMF для импорта и экспорта XML. У меня сейчас нет передо мной книги по ЭМП, но она там накрыта. В качестве альтернативы посмотрите, что делает сгенерированный редактор EMF, когда вы загружаете или сохраняете экземпляр модели.
РЕДАКТИРОВАТЬ
Вот служебный класс ресурса из проекта на основе EMF, который я разработал пару лет назад. Посмотрите на методы load *
. Обратите внимание, что это не обязательно лучший способ сделать это ... но у меня он сработал.
РЕДАКТИРОВАТЬ 2
Я только что понял, что использую XMI, а не простой XML. Настройка средства чтения XML с использованием настраиваемой схемы и (потенциально) настраиваемого сопоставления схемы, вероятно, будет отличаться. Итак, возвращаясь к моему исходному ответу, посмотрите на сгенерированный код !! .
EMF не предназначен для чтения произвольных XML-файлов. EMF использует XML в качестве бэкенда. Откуда берутся ваши XML-файлы/какой схеме они соответствуют? Если у вас есть схема, то вы можете использовать ее для создания модели EMF, которая, в свою очередь, надеюсь, сможет прочитать ваши XML-файлы.
В противном случае вам придется перепроектировать модель EMF, которая действительно сериализуется в ваш XML, чтобы вы могли его прочитать, но это уже будет халтура.
После UPDATE2:
Полагаю, следующий вопрос: "Какая проблема у вас возникает с загрузкой ваших файлов". Как вы это делаете, и что не работает? Или вы не знаете, как это сделать?
Сначала вам нужно настроить фабрику для вашего набора ресурсов (представление в памяти набора файлов, с которыми вы хотите работать), а затем загрузить файл с помощью getResource(URI, bool). Пример для некоторых вещей UML, которые я делаю:
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(UMLResource.FILE_EXTENSION, UMLResource.Factory.INSTANCE);
resourceSet.getPackageRegistry().put("http://www.eclipse.org/uml2/2.0.0/UML", UMLPackage.eINSTANCE);
Resource r = resourceSet.getResource(uriToYourFile,true);
YourModelRootType root = (YourModelRootType) r.getContents().get(0);
Это все должно быть рассмотрено в учебнике, ссылка на который у вас уже есть. Затем вы можете использовать сгенерированный Java API для работы с "корнем".
У меня нет опыта работы с ORM, но, возможно, вам стоит взглянуть на CDO.