Ява, что такое простой и простой метод для сохранения объекта? Все ли методы требуют сериализации? - PullRequest
1 голос
/ 21 марта 2011

Я новичок в этом, но я хотел бы изобразить простой метод сохранения объекта Java, который будет содержать sashMap, а также списки.Я исследовал это и считаю, что могу сериализовать это и сохранить в обычную БД, например, через hibernate, но я не совсем уверен в этом, даже после прочтения многочисленных руководств, так как я не уверен, сериализуем ли обычный список.Я не ожидаю полного ответа о том, как это сделать, но мне интересно, что обычно считается лучшим способом сделать это с наименьшей излишней сложностью, так как я открыт для использования другой настройки базы данных, чем я использую в настоящее время (Hibernateс MySQL)

Я рассмотрел вариант, подобный Mongo DB, но также немного запутался, насколько мне нужно будет сериализовать объект перед сохранением в Mongo db.Я читал много документации, но хочу убедиться, что я выбрал самый простой способ сделать это, который все еще надежен и открыт для предложений, любые советы будут оценены.Объект, который я бы сохранял, был бы похож на приведенный ниже (хотя и более сложный / вложенный)

public class TestClass {

    public Map <Integer, Map> primaryHolder = new HashMap <Integer, Map>;

    public addRecord (Integer key, Map inputMap<Integer, List>) {
        primaryHolder.add(key, inputMap);
    }

}

Спасибо за любой совет

Ответы [ 3 ]

2 голосов
/ 21 марта 2011

К сожалению, «простой» и «простой» не очень хорошо сочетаются с «SQL» или «базой данных» в целом. Типы коллекций Java просто не отображаются на наборы или документы.

«Правильное» решение (с точки зрения SQL) состоит в создании таблицы для элементов списка, затем таблицы для внутренней карты (Integer -> List) и таблицы для внешней карты.

Если ваша структура содержит более пары элементов, производительность этого вам не понравится.

Таким образом, другое решение - это столбец BLOB и интерфейс Serializable. Это имеет другие проблемы, такие как:

  • Вы всегда должны загрузить всю структуру
  • все элементы в структуре должны быть сериализуемыми
  • если вы не можете загрузить один кусок, вы не можете ничего загрузить и т. Д.).
  • Если вы хотите добавить в структуру объекты, которые сопоставляются с таблицами через Hibernate, вам понадобятся некоторые хаки для преобразования экземпляра в его первичный ключ и обратно во время сохранения и загрузки.

Вам следует рассмотреть базу данных OO, такую ​​как db4o , которая может сохранить любой объект Java, но при написании кода вам понадобится другое мышление: Внезапно вам нужно будет подумать о таких вещах, как выполнение запросов db4o в Коллекции Java.

1 голос
/ 21 марта 2011

Посмотрите на объектные базы данных как NeoDatis или db4o . Они предлагают довольно простой способ сохранения объектов.

Лично я использовал NeoDatis, и мне не нужно было реализовывать интерфейс Serializable или что-то подобное.

1 голос
/ 21 марта 2011

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

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