Търся библиотека на Java, която може да ми помогне да анализирам CSV файл, съдържащ записи, разделени с вертикална черта, и да създам екземпляри на моя bean клас от тях.
Разгледах няколко алтернативи като SuperCSV, OpenCSV, BeanIO, JFileHelper, jsefa, ... но нито една от тях изглежда няма необходимото.
Изисквания на библиотеката:
- поддържа записи с променлив брой полета
- осигурява достъп в стил итератор, така че файлът никога да не се зарежда изцяло в паметта
- поддържа съпоставяне на поле към действителния му тип, т.е. може да вземе поле за дата и да го постави java.util.Date в моя bean вместо низ
- позволете ми да предоставя моя собствен фабричен обект, от който да създам зърната, вместо да по подразбиране Class.newInstance()
Всички библиотеки, които разгледах, изглежда нямат изискване #4.
Мога да живея с отражение, но проблемът е, че той все още създава нов bean обект за всеки ред в CSV файла. Тъй като единственото нещо, което искам да направя с моя bean в този момент, е да го предам на моя слой за постоянство и да го съхраня в DB, има смисъл да поставите няколко екземпляра на bean в пул и да създадете фабрика, която взема екземпляри от този басейн. По този начин мога да използвам повторно моите екземпляри и анализирането на CSV файл от 100 000 реда няма да доведе до 100 000 екземпляра, живеещи в паметта, докато не се появи GC.
Някой знае ли за библиотека, която може да се справи с всички тези изисквания?