Hibernate based persistence layer