Quick'n'dirty упорство [закрыто]

Вот элегантная, общая реализация в Scala, как описано в 99 Scala Problems .

object P26 {
  def flatMapSublists[A,B](ls: List[A])(f: (List[A]) => List[B]): List[B] = 
    ls match {
      case Nil => Nil
      case sublist@(_ :: tail) => f(sublist) ::: flatMapSublists(tail)(f)
    }

  def combinations[A](n: Int, ls: List[A]): List[List[A]] =
    if (n == 0) List(Nil)
    else flatMapSublists(ls) { sl =>
      combinations(n - 1, sl.tail) map {sl.head :: _}
    }
}

16
задан Robert Munteanu 10 June 2009 в 15:40
поделиться

8 ответов

Я предпочитаю XStream : нужен только один Jar, быстрый и очень простой в использовании

10
ответ дан 30 November 2019 в 12:51
поделиться

Попробуйте iBatis . Я недавно использовал его в проекте, где мне нужна была абстракция JDBC без ORM / spring / container / и т. Д.

Простота настройки, всего пара небольших банок, и конфигурация очень гибкая. Это не даст вам гибкости изменения-в-в-моменте-уведомлениях гибернации и т. Д. al. но он довольно легкий.

5
ответ дан 30 November 2019 в 12:51
поделиться

Возможно, вам подойдет db4o . Не позволяйте названию ввести вас в заблуждение, его можно встроить. Согласно его руководство :

Object yourObject = ...;

String fileName = ...; // where you wish to store the objects
ObjectContainer container = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), fileName);
try {
    container.store(yourObject);
} finally {
    container.close();
}
3
ответ дан 30 November 2019 в 12:51
поделиться

Я бы добавил Jackson (json) и JAXB (xml) ; в дополнение к уже упомянутому Xstream. Джексон хорошо работает с одной оговоркой: если у вас есть обширное полиморфное хранилище, десериализация может оказаться сложной. Вот где Xstream работает лучше.

И я согласен с тем, что сериализация Java не подходит для персистентности - это хорошо для передачи сериализованных объектов, но постоянство имеет временное измерение, и классы меняются со временем; и здесь начинаются проблемы (я уверен, что вы это знаете, но, поскольку другие, кажется, не понимают, почему peristing-using-serialization - это плохо, я хотел бы упомянуть об этом). Кроме того, намного проще наблюдать за сериализованными текстовыми форматами (json, xml), чем с двоичными. И, наконец, если вам нужна экономия места, сжатие (например, gzip) творит чудеса, размер данных после сжатия, как правило, идентичен, независимо от формата (при условии одинакового количества информации)

3
ответ дан 30 November 2019 в 12:51
поделиться

Вы ищете

решение с сохраняемостью для простого куча объектов

Так почему же встроенная сериализация Java - это хитрость?

Если вы ленивы, возможно, вам поможет сериализация с помощью JSON .

1
ответ дан 30 November 2019 в 12:51
поделиться

Prevayler кажется вам хорошим вариантом.

Он основан на сериализации Java и чертовски быстр.

Дополнительная информация:

  • http: // www.prevayler.org/
  • http://www.prevayler.org/wiki/ inventory
1
ответ дан 30 November 2019 в 12:51
поделиться

Вы должны посмотреть на JAXB. Он является частью Java, начиная с JRE 6. Он довольно прост в использовании и позволяет управлять XML-схемой из объектной модели Java. Самое приятное то, что вам не нужны дополнительные файлы jar или библиотеки, поскольку это часть Java. Ознакомьтесь с пакетом javax.xml.bin.

Информация о самом проекте JAXB: https://jaxb.dev.java.net

Ссылка на JavaDocs в JRE: http://java.sun.com/javase/6/docs/api/javax/xml/bind/package-frame.html

2
ответ дан 30 November 2019 в 12:51
поделиться

Проверить out BeanKeeper - это самый быстрый, самый грязный и простой ORM / постоянство, которое я когда-либо видел. Конечно, это точно превосходит iBatis.

Store myStore = new Store((DataSource) ctx.lookup("jdbc/myds"));

package com.acme.bookstore;
public class Book
{
  private String title;
  private Author author;

  ...setters, getters...
}

package com.acme.bookstore;
public class Author
{
   private String firstName;
   private String lastName;
   private Date birthDate;

   ...setters, getters...
 }

store.save(book);
1
ответ дан 30 November 2019 в 12:51
поделиться
Другие вопросы по тегам:

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