Plain JDBC is nothing but manually writing all the boilerplate code to connect to db and fetch data. JDBC Template is a template from Spring which takes care of most of the boilerplate code in plain JDBC. Hibernate is a JPA implementation. Spring Data JPA is a JPA Data Access Abstraction. You may use a JPA implementation along with this like Hibernate, Eclipse Link, etc. Spring Data allows to write queries via method names.