Как использовать существующие привязки данных Java в Grails?

Мне нужно добавить новый источник данных в мой проект Grails, который использует базу данных postgresql musicbrainz. http://musicbrainz.org/doc/MusicBrainz_Database

Я нашел проект на github, в котором привязки данных готовы к использованию для весеннего проекта: https://github.com/lastfm/musicbrainz-data

Могу ли я использовать эти привязки данных в проекте Grails 2.2.3? Если да, то как я могу это сделать? (поскольку для grails нет hibernate xml, необходимого для grails (относительно документации grails: Hibernate Mapped Domain Classes))


person whitenexx    schedule 18.08.2013    source источник
comment
Вы спрашиваете об этом, потому что по какой-то причине вы не хотите использовать объекты домена GORM?   -  person BoxerBucks    schedule 18.08.2013
comment
Я не уверен. У меня есть существующий проект Grails с базой данных и классами предметной области. Теперь я хочу получить доступ к другой базе данных (musicbrainz), чтобы получить оттуда информацию. Я подумал, что будет проще использовать проект github musicbrainz-data для доступа к этим данным. Не так ли? Что ты предлагаешь? (Мне нужен каждый исполнитель и его альбомы и треки из базы данных musicbrainz)   -  person whitenexx    schedule 18.08.2013


Ответы (1)


Я не думаю, что это будет. Просто настройте дополнительный источник данных и смоделируйте нужные вам таблицы или объекты.

Как получить доступ к двум базам данных в Grails

Как только вы это сделаете, вы сможете использовать все методы GORM и динамические средства поиска для получения ваших данных. Плюс критерии проверки, транзакции и т. д. Если нет каких-то очень специализированных критериев, которые делают необходимым обход GORM, я бы предложил использовать его.

person BoxerBucks    schedule 18.08.2013
comment
Отличный комментарий! У меня уже есть доменный класс под названием Artist в моем проекте. В базе данных musicbrainz также есть таблица с именем artist, в которой хранятся исполнители. Я хотел бы связать моих внутренних исполнителей с исполнителями musicbrainz, потому что мои внутренние исполнители содержат некоторую дополнительную информацию. Я уже объявил несколько источников данных (работающих). Можно ли определить ОДНУ модель Artist и объявить для каждого атрибута, откуда он берется? (имя из внутреннего источника данных, дата рождения из источника данных musicbrainz и т. д.). Это возможно? Я не мог найти такую ​​вещь в документации Grails. - person whitenexx; 19.08.2013
comment
Да, ты можешь. У меня нет, но документация обсуждает это здесь: grails.org/doc/latest /guide/conf.html#multipleDatasources. Посмотрите в разделе «Настройка классов домена». - person BoxerBucks; 19.08.2013
comment
Спасибо. Я должен узнать, что происходит. Я думаю, что Grails создает схему для всех атрибутов в вашем источнике данных по умолчанию, и когда вы запрашиваете данные, вы должны решить, какой источник данных запрашивать. И поскольку я знаю, что даты рождения нет в источнике данных по умолчанию (столбец/атрибут есть, но он пуст), я должен запросить источник данных musicbrainz. Я надеюсь, что мои мысли верны. - person whitenexx; 19.08.2013
comment
Хм. Может быть, вы можете импортировать один в другой, а затем иметь метод для вашего объекта, который извлекает другие необходимые вам атрибуты и добавляет их динамически? Хотя мне придется возиться с этим. - person BoxerBucks; 19.08.2013
comment
Хорошая идея! Я мог бы использовать свою внутреннюю модель Artist, которая содержит GID musicbrainz того же исполнителя. Затем я пишу несколько геттеров и сеттеров, которые получают данные из источника данных musicbrainz. Или даже лучше: я создаю отношения между моим внутренним Артистом и Артистом musicbrainz. Тогда я мог бы получить доступ через internalArtist.mbArtist.attribute, если бы мне что-то понадобилось, и горм сделал бы все запросы за меня. - person whitenexx; 19.08.2013
comment
У меня это работает с отношением между внутренним и MusicBrainz Artist. Мне пришлось создать несколько геттеров и сеттеров с подзапросами, потому что вы не можете создавать отношения между двумя источниками данных с помощью спящего режима. - person whitenexx; 19.08.2013
comment
Большой! Удачи с остальной частью вашего приложения. - person BoxerBucks; 19.08.2013