Key Takeaways
- Spring Data JPA simplifies CRUD operations by extending the CrudRepository interface.
- Entities are mapped using JPA annotations, automating standard database operations.
- The Spring Boot framework accelerates application setup with its convention-over-configuration approach.
Spring Data JPA Interview Questions
User Entity
package userservice.model;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String name;
public long getId() {
return this.id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
User Repository
package userservice.repository;
import userservice.model.User;
import org.springframework.data.repository.CrudRepository;
public interface UserRepository extends CrudRepository {
// Additional query methods, if necessary
}
CRUD Examples
package userservice;
import userservice.model.User;
import userservice.repository.UserRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class Application {
private static final Logger log =
LoggerFactory.getLogger(Application.class);
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public CommandLineRunner demo(UserRepository repo) {
return (args) -> {
// CREATE
User user = new User();
user.setName("Alice");
repo.save(user);
log.info("User created: " + user);
// READ
User savedUser = repo.findById(user.getId()).orElseThrow(()-> new RuntimeException("User not found"));
log.info("User retrieved: " + savedUser);
// UPDATE
savedUser.setName("Ted");
repo.save(savedUser);
log.info("User updated: " + savedUser);
// DELETE
repo.delete(savedUser);
log.info("User deleted");
};
}
}
FAQ
What dependencies do I need for Spring Data JPA?
You'll need spring-boot-starter-data-jpa in your Maven or Gradle build files, along with a database connector like H2 for in-memory databases or MySQL/PostgreSQL for production.
How do I customize repository methods?
You can extend CrudRepository with custom query methods, utilizing JPQL or Spring Data's derived query mechanisms.
What is the purpose of @GeneratedValue in JPA?
The @GeneratedValue annotation specifies the primary key generation strategy, such as AUTO or IDENTITY, to efficiently manage the unique identifiers in your entity.
