메소드 또는 변수를 구현(implements)하는가 그대로 사용(extends)하는가에 따라서 형태가 갈린다.
extends(상속)
- 상속의 대표적인 형태
- 부모의 메소드를 그대로 사용
- 오버라이딩(재정의)할 필요 없이 부모에 구현되있는 것을 직접 사용 가능
JAVA는 다중상속을 지원하지 않는다.
그래서 implements를 사용(상속이라고 말한 순 없지만..)
implements (상속)
- 부모의 메소드를 반드시 오버라이딩(재정의)해야 함
- 다중상속을 대신해준다.
BarterRepository, (JpaRepository<Barter, Long>와 BarterQuerydsl 을 상속받고있다.)
public interface BarterRepository extends JpaRepository<Barter, Long> , BarterQuerydsl {
List<Barter> findAllByBuyerIdOrSellerId(Long userId, Long userId1);
Barter 엔티티, Timestamped를 상속받고 있다.
// 성훈 - 거래내역
@Getter
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Barter extends Timestamped {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "barter_id", nullable = false)
private Long id;
@Column(nullable = false)
private Long buyerId;
implements (상속)
- 부모의 메소드를 반드시 오버라이딩(재정의)해야 함
- 다중상속을 대신해준다.
BarterQuerydsl (인터페이스)
public interface BarterQuerydsl {
List<HotBarterDto> findByHotBarter (int status);
BarterRepositoryImpl (임플리먼트로 오버라이딩을 통한 구현)
@Repository
public class BarterRepositoryImpl implements BarterQuerydsl {
private final JPAQueryFactory queryFactory;
public BarterRepositoryImpl(JPAQueryFactory queryFactory) {
this.queryFactory = queryFactory;
}
@Override
public List<HotBarterDto> findByHotBarter(int status) {
return queryFactory
.select(new QHotBarterDto(barter1.barter))
.from(barter1)
.where(barter1.status.eq(status))
.limit(1000)
.orderBy(barter1.sellerId.desc())
.fetch();
}
https://hanke-r.tistory.com/116
'공부 > 메모' 카테고리의 다른 글
oEmbed 공부하기 (0) | 2022.06.25 |
---|---|
기술 부채란? (0) | 2022.06.23 |
제이유닛 테스트 공부하기 - 1 (0) | 2022.05.17 |
웹소켓 공부 - 1 (0) | 2022.04.29 |
예외처리관련 링크 - 2 (0) | 2022.04.28 |