Как отобразить записи CSV в боб? - PullRequest
1 голос
/ 09 февраля 2012

Я ищу библиотеку Java, которая может помочь мне разобрать файл CSV, содержащий записи, разделенные каналом, и создать из них экземпляры моего класса EJB.

Я рассмотрел несколько альтернатив, таких как SuperCSV, OpenCSV, BeanIO, JFileHelper, jsefa, ... но ни один из них, похоже, не имеет того, что требуется.

Требования к библиотеке:

  1. поддержка записей с переменным количеством полей
  2. обеспечивает доступ в стиле итератора, чтобы файл никогда полностью не загружался в память
  3. поддерживает сопоставление поля его фактическому типу, т. Е. Иметь возможность взять поле даты и поместить его в мой bean-компонент java.util.Date вместо строки
  4. позвольте мне предоставить мой собственный объект фабрики для создания bean-компонентов вместо значения по умолчанию для Class.newInstance ()

Кажется, что во всех библиотеках, в которые я смотрел, нет требования # 4.

Я могу жить с отражением, но проблема в том, что он по-прежнему создает новый объект bean для каждой строки в файле CSV. Поскольку единственное, что я хочу сделать с моим bean-компонентом на данный момент, это передать его на уровень персистентности и сохранить его в БД, имеет смысл поместить пару экземпляров bean-компонента в пул и создать фабрику, которая получает экземпляры из этот бассейн. Таким образом, я могу повторно использовать свои экземпляры, и анализ файла CSV из 100 000 строк не приведет к тому, что 100 000 экземпляров будут жить в памяти, пока не появится GC.

Кто-нибудь знает библиотеку, которая может удовлетворить все эти требования?

1 Ответ

1 голос
/ 13 ноября 2014

Это может быть альтернатива: https://github.com/org-tigris-jsapar/jsapar
Это, вероятно, не будет соответствовать требованию №4.

Здесь вы можете найти более полный список альтернатив: http://jsapar.blogspot.se/p/links.html

РЕДАКТИРОВАТЬ
Начиная с jsapar версии 1.8 теперь можно настраивать создание объектов Java во внешнем фабричном классе, поэтому я предполагаю, что требование № 4 теперь также выполнено.

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