JPA と DB 連携
Spring Data JPA を使うと、DB アクセスの定型コードを大幅に削減できます。ここでは Entity / Repository / Service の最小構成を示します。
Entity
@Entity
@Table(name = "books")
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String title;
}
Repository
public interface BookRepository extends JpaRepository<Book, Long> {
List<Book> findByTitleContaining(String keyword);
}
Service
@Service
public class BookService {
private final BookRepository repository;
public BookService(BookRepository repository) {
this.repository = repository;
}
public List<Book> list() {
return repository.findAll();
}
}
処理フロー
- Controller がリクエストを受ける
- Service が業務ロジックを実行する
- Repository が DB にアクセスする
- 結果を DTO に変換してレスポンスへ返す
Entity をそのまま API レスポンスに返すと、将来の項目追加や循環参照で問題が起きやすくなります。DTO を挟む設計を推奨します。