Чего вы пытаетесь достичь с помощью абстракции? Как правило, абстракция скрывает конкретную реализацию ... так что с точки зрения NoSQL это будет означать сокрытие того, что вы используете Mongo vs Couch (например). Но NoSQL - это общий термин, который относится к 4 различным классам реализации хранилища данных. Одним из них является График (Neo4j), Документ (Монго, Диван), Значение имени или Широкий столбец (например, Кассандра).
Хотя такая абстракция, как hibernate, будет иметь смысл в одном из этих классов, абстрагирование их от того, что в отрасли называется «NoSQL», не имеет большого смысла.
Теперь ... абстракция имеет смысл в коде вашего приложения. В мире Java Spring может помочь вам. Реализуйте свой уровень доступа к данным с помощью модуля Spring (такого как spring-mongo, spring-neo4j) против интерфейса Java, который просто вводит-выводит POJO. В любом случае, это ТВЕРДЫЙ способ.