Yml файлы в платформе Play: могут ли они ссылаться друг на друга - PullRequest
2 голосов
/ 19 сентября 2011

В моем приложении я хочу инициализировать его большими данными.когда я записал все эти данные в один файл YML, это было около 4 МБ, но затем приложение не начало делать ошибку пространства кучи Java.когда я удаляю некоторые его части до 109 КБ, все работает, но, конечно, с некоторыми пропущенными данными.

Мое ожидание решить эту проблему - одно из следующих:

  1. сделать большечем один файл, но как ссылаться на объект в другом файле YML, возможно ли это?
  2. Загрузить схему в базу данных с помощью кода при запуске, это легко сделать?
  3. решение, предложенное любым из читателей этого вопроса ...

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

Ответы [ 2 ]

0 голосов
/ 22 сентября 2011

Я сделал что-то подобное при запуске Job:

@Override
public void doJob() {
    if (Image.count() == 0 && Play.mode.equals(Play.Mode.DEV)) {
        Fixtures.deleteAllModels();
        List<Image> images = Fixtures.loadYaml("Images.yml", List.class); //<-- this just loads the image objects (not in db yet)
        Fixtures.loadModels("Albums.yml"); // <----- this puts albums into db
        int i = 0;
        for (Image img : images) {
            img.album = Album.find("byName", img.album.name).first();
            img.save(); // <--- here image entities go into db
            i++;
        }
    }
0 голосов
/ 19 сентября 2011

Вы можете взглянуть на DBUnit для сброса и перезагрузки всей вашей БД, предполагая, что это SQL.

...