✅ 1. 메서드 이름 기반 쿼리

Spring Data JPA에서는 메서드 이름만으로 SQL 쿼리를 자동으로 만들어줍니다.

규칙에 따라 메서드 이름을 작성하면 JPA가 내부적으로 쿼리를 생성해 실행합니다.

🧩 형식

findBy[필드명][조건][And/Or][다른 필드명][조건]

📌 예시

// 엔티티
@Entity
public class Member {
    @Id
    private Long id;
    private String username;
    private int age;
}

// 레포지토리 인터페이스
public interface MemberRepository extends JpaRepository<Member, Long> {
    List<Member> findByUsername(String username);
    List<Member> findByUsernameAndAgeGreaterThan(String username, int age);
}


✅ 2. @Query (JPQL)

SQL과 유사하지만 엔티티 객체를 대상으로 작성하는 객체 지향 쿼리입니다.

📌 예시

// JPQL 사용
public interface MemberRepository extends JpaRepository<Member, Long> {

    @Query("SELECT m FROM Member m WHERE m.username = :username AND m.age >= :age")
    List<Member> findCustomQuery(@Param("username") String username, @Param("age") int age);
}


✅ 3. QueryDSL