Что ж, основным недостатком было бы несоответствие между Java и БД. Это большая головная боль, если вам это не нужно. Это также будет намного медленнее для действительно простого доступа. С другой стороны, выгодами будут транзакции и сохранение файловой системы в случае сбоя. Кроме того, в зависимости от ваших потребностей, он позволяет выполнять запросы так, как это может быть сложно сделать с обычной структурой данных Java.
Что-то среднее, я бы взглянул на Neo4j . Это чисто графическая база данных Java. Это означает, что он легко встраивается, обрабатывает параллелизм и транзакции, хорошо масштабируется и не имеет всех проблем несоответствия, которые есть у реляционных БД.
Обновлено Если ваша структура данных достаточно проста - карта списков, карта карт или что-то в этом роде, вы, вероятно, можете избежать проблем с одновременными коллекциями в JDK или с Google Collections , но гораздо дальше, и вы, вероятно, обнаружите, что воссоздаете базу данных в памяти. И если ваши ограничения запросов даже отдаленно сложны, вам придется реализовать все эти возможности самостоятельно. И тогда вам нужно будет убедиться, что они работают одновременно и т. Д. Если это потребует какой-либо серьезной сложности или масштаба (большие наборы данных), я бы точно не бросил ваш собственный, если вы действительно не захотите сделать это.
Если вы решили использовать встроенную БД, существует довольно много вариантов. Возможно, вы захотите начать с рассмотрения того, хотите ли вы идти по пути SQL или NoSQL. Если вы не видите реальных преимуществ использования SQL, я думаю, что это также значительно увеличит сложность вашего приложения. Hibernate - это, вероятно, ваш самый простой маршрут с наименее реальным SQL, но он все еще является головной болью. Я сделал это с Derby без серьезных проблем, но это все еще не так просто. Вы можете попробовать db4o , который является объектной базой данных, которая может быть встроена и не требует отображения. Это хороший обзор. Как я уже говорил ранее, если бы это был я, я бы попробовал Neo4j, но это может быть просто желание играть с новыми блестящими вещами;) Я просто вижу это как быть очень прозрачной библиотекой, которая имеет смысл. Hibernate / SQL и db4o кажутся слишком сильными, чтобы чувствовать себя легковесными.