일반화
Repository가 User, Post 같은 여러 엔티티를 같은 구조로 다룬다.
T extends HasId처럼 타입 매개변수에 조건을 걸면 다양한 타입을 받으면서도 필요한 속성 접근은 안전해진다.
Repository가 User, Post 같은 여러 엔티티를 같은 구조로 다룬다.
id처럼 꼭 필요한 속성은 extends 제약으로 보장한다.
제약을 만족한 뒤에는 함수 안에서 해당 속성을 안전하게 사용할 수 있다.
타입별 추가 속성은 유지하면서 공통 로직만 재사용한다.
제네릭 제약은 타입을 좁히는 장벽이 아니라, 공통 로직이 기대하는 최소 계약을 코드로 적는 방식이다.