Что самый легкий путь состоит в том, чтобы сохранить объекты Java?

Прямо сейчас у меня есть программа Java, классами которой в настоящее время является POJOs и сохраненный в энергозависимой памяти. Они должны быть сохранены. Насколько я понимаю двумя популярным выбором является JDO и Персистентность Java API. Для кого-то, кто знает мало о SQL, Крутящем моменте, и т.д., который является самым легким способом добавить персистентность к данным моей программы?

7
задан Dmitri Chubarov 30 October 2012 в 09:44
поделиться

6 ответов

Традиционный способ сериализации в файловую систему - использование Java Serialisation . Однако везде необходимо реализовать Serializable.

Более простое решение - это сериализация в XML (а затем дамп в файловую систему) с помощью XStream. Не нужно реализовывать никаких интерфейсов, и большинство сериализуется и десериализуется без дальнейшего вмешательства. При необходимости можно дополнительно настроить сериализацию. Единственная проблема, с которой я сталкивался, это сериализация внутреннего класса без преднамеренной сериализации содержащего его внешнего класса (это связано с неявной этой ссылкой)

.
7
ответ дан 6 December 2019 в 06:36
поделиться

Самый простой способ, с которым я столкнулся, - это db4o :

ObjectContainer db = Db4o.openFile(location);
db.store(myObject);
List<MyObject> myObjects = db.query(MyObject.class);

Кроме того, есть действительно хорошие способы запроса другими способами.

5
ответ дан 6 December 2019 в 06:36
поделиться

Если сериализация - это вариант, рассмотрите возможность использования API распространенности, например prevalayer или Space4J (более поздняя версия). О распространенности объектов:

Распространенность - это концепция, начатая Клаусом Вестефельдом о том, как хранить данные реально объектно-ориентированным способом, используя только моментальные снимки памяти, журналы транзакций и сериализацию.

Проверьте эту статью , чтобы узнать, как узнать больше по этой теме (больше в Google).

5
ответ дан 6 December 2019 в 06:36
поделиться

Сериализация объектов в файловой системе, если вы не знаете SQL или реляционных баз данных.

Вы должны научиться JDBC использовать JDO, JPA, Hibernate, или что-нибудь еще. Если ваши POJO не очень сложны, я бы порекомендовал вам начать с этого и работать в этом направлении.

Убедитесь, что вы научились нормализации и правильному проектированию индексов.

.
6
ответ дан 6 December 2019 в 06:36
поделиться

Звучит так, как будто вы, возможно, захотите сохранить в БД. Однако, чтобы избежать сложностей БД, одним из простых решений для сохранения POJO в файловой системе является их сериализация в XML документ. Java 1.6 API включает в себя JAXB фреймворк, находящийся в пакете javax.xml.bind. Чтобы использовать JAXB, вы, по сути, аннотируете свой POJO и создаете маршал и не маршал методы, как например:

@XmlRootElement(name="Foo")
public class Foo {

   @XmlElement(name="Bar")
   public int mBar;

   public static void marshal(Foo foo, OutputStream out) IOException {      
      try {
         JAXBContext jc = JAXBContext.newInstance(Foo.class);
         Marshaller marshaller = jc.createMarshaller();
         marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
         marshaller.marshal(qaConfig, out);
      }
      catch (JAXBException ex) {
         throw new IOException(ex);
      }
      finally {
         out.close();
      }
   }

   public static Foo unmarshal(InputStream in) throws IOException {

      try {
         JAXBContext jc = JAXBContext.newInstance(Foo.class);
         Unmarshaller unmarshaller = jc.createUnmarshaller();

         return (Foo)unmarshaller.unmarshal(in);
      }
      catch (JAXBException ex) {
         throw new IOException(ex);
      }
      finally {
         in.close();
      }
   }
}

Допустим, вы сохраняете экземпляр Foo, где mBar равен 42, тогда это решение создаст XML файл, как например:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Foo>
   <Bar>42</Bar>
</Foo>
2
ответ дан 6 December 2019 в 06:36
поделиться

DataNucleus - это самый простой способ, поскольку он предоставляет JDO и JPA API для сохранения практически любого типа хранилища данных, который вам когда-либо понадобился. Зачем писать весь этот JAXB код в одном из других ответов, когда DataNucleus делает это за вас? Все это поддерживается стандартами Java

.
2
ответ дан 6 December 2019 в 06:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: