H2
Utan mer specifik information om dina behov är min första tanke projektet H2 Database Engine. H2 är en ren Java, öppen källkod, kostnadsfri, relationsdatabas som har utvecklats aktivt i flera år.
"2" hänvisar till det faktum att detta är andra en sådan databas (hypersonisk SQL, senare gaffelad som HSQLDB) byggd av dess huvudförfattare , Thomas Mueller, så han kan sina grejer.
Även om H2 kan köras som server, är det särskilt skickligt att vara inbäddat i en app och kan köras med relativt lite minne om det behövs.
Eftersom det är ren Java är H2 byggd speciellt för JDBC -åtkomst. Levereras med sin egen JDBC-drivrutin.
Huvudsidan har bra dokumentation inklusive en QuickStart -översikt och en Tutorial.
Du måste lära dig grunderna i tabeller, kolumner, datatyper och SQL-kommandon. Du kan lära dig själv. Att få lite handledning från någon som är bekant med relationsdatabaser kommer att dramatiskt minska den inlärningskurvan.
H2 liknar SQLite men mer fullt utrustad. Att vara ren Java och inbäddad gör att H2 passar bättre för dina behov och förmodligen lättare att komma igång.
Över på systersidan, Stack Overflow, har jag skrivit några svar som ger källkod för en komplett Java-exempelapp med H2. Gilla detta, detta, detta, detta, det här och mer.
Derby
Apache Derby -projektet liknar H2. Tidigare känd som IBM Cloudscape och även känd som "Java DB" när den tillhandahålls av Oracle i ett paket med Java SDK.
Derby är mer komplicerat än H2, inklusive att vara riktad används som server. Jag misstänker att H2 passar bättre för dina behov.
Filer
Om allt du behöver är relativt enkel data i mängder som är tillräckligt små för att förvaras i minnet, hoppa över databasen. Lagra dina data som text i vanliga filer.
Vanliga format för sådana vanliga textfiler inkluderar:
- CSV, kommaseparerade värden.
- TSV. Avgränsas av -fliken.
- ASCII-separatorer, ASCII-koder # 28-31.
Markerar fil, grupp, post och enhet / fält ). Mindre vanligt att Tab men mer förnuftigt och flexibelt)
Observera att medan CSV låter enkelt, har olika programmerare hittat sätt att blanda saker med variationer. I årtionden har ingen ens brytt sig om att skriva ner en specifikation förrän RFC 4180 2005.
När du behöver dessa data, läs den i minnet, starta objekt genom att definiera egna klasser som "Person" eller "Faktura", samla dessa objekt och sök i dessa samlingar för att hitta önskade objekt.
Även om det är begreppsmässigt enkelt finns det många möjliga snafus. Ett av huvudsyftena med en databasmotor är att hantera sådana problem åt dig.
- Du måste vara säker på att stänga filer efter att du har använt dem, även om JVM automatiskt bör stänga alla öppna filer.
- Du kan överväga filkorruption. Vad händer om appen kraschar eller på annat sätt avbryts mitt i att skriva en fil? Ett sätt att hantera detta är att skriva en ny fil och bara ta bort den gamla efter.
- Om du har flera trådar måste du skydda dig mot problem med samtidigheten. Du vill inte ha olika trådar som försöker ersätta data för samma fil samtidigt.
Apache Common CSV
Apache Commons CSV projekt är ett relativt nytt rent Java-kostnadsfritt bibliotek för att hantera sysslorna med att läsa och skriva vanliga textfiler. Den hanterar alla nämnda format, inte bara CSV (trots sitt namn). Jag har använt version 1.1 och tyckte att den var ganska användbar, robust och pålitlig.