Вашему решению не хватает еще одной вещи, а именно уровня обслуживания.Это важно, поскольку вы будете использовать DAO на уровне сервисов для выполнения бизнес-логики.Обычно транзакции с базами данных также определяются на уровне сервисов, поэтому имейте это в виду.
Я бы также избавился от интерфейса Persistent
, так как я не вижу, как он помогает во всем, а вместо этого - ябудет использовать абстрактный класс для PersistentImpl
.AbstractEntity
было бы более подходящим именем.
Кроме этого - ваше решение аккуратное и чистое - я использую его в нескольких моих проектах и очень доволен им:)