Прямо сейчас у меня есть программа java, чьи классы в настоящее время являются POJO и хранятся в энергозависимой памяти. Они должны быть сохранены. Насколько я понимаю, два популярных варианта: JDO и Java Persistence API. Для тех, кто мало знает о SQL, Torque и т. Д., Что является самым простым способом добавить постоянство к данным моей программы?Какой самый простой способ сохранить объекты Java?
ответ
Традиционный способ сериализации файловой системы - использовать Java Serialisation. Однако вам необходимо внедрить Serializable.
Простым решением является сериализация в формате XML (а затем сбрасывание в файловую систему) с использованием XStream. Вам не нужно реализовывать какие-либо интерфейсы, и большинство всего сериализуется и десериализуется без дальнейшего вмешательства. При необходимости вы можете настроить сериализацию. Единственная проблема, которую я когда-либо имел в serialising внутреннего класса, не намеренно serialising вмещающего внешний класса (это связанно с неявной this
ссылки)
Сериализовать объекты в файловой системе, если вы не знаете SQL или реляционные базы данных.
Вам нужно научиться JDBC использовать JDO, JPA, Hibernate или что-то еще. Если ваши POJO не будут ужасно сложными, я бы посоветовал начать там и работать над вами.
Убедитесь, что вы узнали о нормализации и правильном оформлении индексов.
Чтобы использовать JDO, JPA или Hibernate, вам явно не нужно знать JDBC, поскольку это точка этих API.Они используют JDBC под обложками, когда они сохраняются в РСУБД, так что сложность скрыта от вас. – DataNucleus
Я не согласен - использовать их не рекомендуется, не зная JDBC. Сложность скрыта, но это непрозрачная абстракция. – duffymo
Непроникающая абстракция с JDO, хотя, конечно, JPA и Hibernate сильно привязаны к JDBC. Зависит от того, какой API опрос решает пойти – DataNucleus
Похоже, что вы можете захотеть сохранить базу данных. Однако, чтобы избежать сложностей БД, одним простым решением для сохранения POJO в файловой системе является сериализация их в XML-документе. API Java 1.6 включает в себя инфраструктуру 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, где мБар 42, то это решение будет производить файл XML следующим образом:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Foo>
<Bar>42</Bar>
</Foo>
DataNucleus скрывает все эти маршаллинг и unmarshalling от пользователя, и они просто добавляют аннотации JDO или JPA к классам, которые они хотят сохранить. Меньше кода. Менее обрабатывать – DataNucleus
Самым простым способом я наткнулся на еще является db4o:
ObjectContainer db = Db4o.openFile(location);
db.store(myObject);
List<MyObject> myObjects = db.query(MyObject.class);
Плюс есть отличные способы запроса другими способами.
К сожалению: в октябре 2014 года Actian отказался продолжать активно продвигать коммерческое предложение продукта db4o для новых клиентов. http://supportservices.actian.com/versant/default.html – Jonathan
Если сериализация является опцией, рассмотрите возможность использования API распространенности, например prevalayer или Space4J (более поздняя версия). О распространенности объекта:
Преобладание является концепция начала Клаус Wuestefeld о том, как хранить данные в реальном объектно-ориентированном способом, используя снимки только памяти, журналы транзакций и сериализации.
Проверьте this article, чтобы узнать больше по этой теме (подробнее о Google).
Space4j также предлагает прозрачный кластер и индексацию. – TraderJoeChicago
DataNucleus - это самый простой способ, поскольку он предоставляет API JDO и JPA для сохранения практически любого типа хранилища данных, который вам когда-либо понадобится. Зачем писать весь этот код JAXB в одном из других ответов, когда DataNucleus делает это за вас? Все подкреплено стандартами Java
- 1. Какой самый простой способ использовать подключенный сканер?
- 2. Какой самый простой способ сохранить данные в приложении для iPhone?
- 3. Какой самый простой/самый чистый способ получить MessageID отправленного письма?
- 4. WinForms - самый простой способ сохранить некоторые данные?
- 5. Какой самый простой способ сделать быстрый сбой?
- 6. Какой самый простой способ получить SAS?
- 7. Android: какой самый простой способ подписать APK?
- 8. Какой самый простой способ скопировать объект ArrayBuffer?
- 9. Какой самый простой способ проверить шлюз?
- 10. Какой самый простой способ выполнить несколько файлов
- 11. Какой самый простой способ перенаправить неподдерживаемые браузеры?
- 12. Какой самый простой способ установки PHP
- 13. Какой самый простой способ декодирования данных base64?
- 14. Какой самый простой способ распечатать изображение на экране на java?
- 15. Самый простой способ сохранить внешние rss-каналы
- 16. Самый простой способ сделать столкновение LWJGL JAVA
- 17. Java Game - Самый простой способ рисовать здания
- 18. Какой самый простой способ переключения между разными отправителями в VBA?
- 19. Самый простой способ загрузить изображения
- 20. scala самый простой способ конвертировать любые объекты в String?
- 21. Самый эффективный способ сохранить коллекцию на Java?
- 22. Какой самый простой способ воспроизвести случайно сформированный уровень в Python?
- 23. Какой самый простой способ импортировать System.Data.DataSet в Excel?
- 24. Java: Самый простой способ сравнения двух XMLs
- 25. Самый простой способ повернуть изображение в java
- 26. Самый простой способ распаковать банку в java
- 27. Самый простой способ вызвать Java из C#?
- 28. Java: Самый простой способ вычитать даты
- 29. Какой самый простой способ связать файл с программой Javascript?
- 30. Какой самый простой способ создать сайт бронирования заказов?
Для всего, что является (un) святым, оставайтесь как можно дальше от Torque. – ChssPly76