refactor: use interface for models and jpa entities
refactor: use generic type in dao and models
refactor: remove unsused code
refactor: jpa entities now implements Persistable interface from spring-data-jpa
fix: use consistent hashCode on models
refactor: refactor generic dao