org.springframework.data.repository.query.Param와 org.apache.ibatis.annotations.Param 어노테이션은 서로 다른 패키지에 있으며 다른 용도로 사용됩니다.
org.springframework.data.repository.query.Param 어노테이션은 스프링 프레임워크에서 제공하는 Spring Data JPA와 같은 ORM(Object Relational Mapping) 프레임워크에서 사용됩니다. 이 어노테이션은 메소드의 파라미터 이름과 쿼리 매개 변수 이름을 매핑하기 위해 사용됩니다.
예를 들어, 다음과 같은 메소드가 있다고 가정해보겠습니다.
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
@Query("SELECT u FROM User u WHERE u.username = :name")
User findByUsername(@Param("name") String username);
}
위의 코드에서 @Param 어노테이션은 name 매개 변수의 이름을 지정합니다. 이 이름은 JPQL 쿼리의 :name 매개 변수와 매핑됩니다. 이 어노테이션을 사용하여 매개 변수 이름을 지정하지 않으면 Spring Data JPA는 매개 변수의 순서를 기반으로 쿼리 매개 변수를 매핑합니다.
반면에, org.apache.ibatis.annotations.Param 어노테이션은 MyBatis와 같은 SQL 매퍼 프레임워크에서 사용됩니다. 이 어노테이션은 SQL 매개 변수 이름과 매핑됩니다.
예를 들어, 다음과 같은 메소드가 있다고 가정해보겠습니다.
public interface UserMapper {
@Select("SELECT * FROM users WHERE username = #{name}")
User findByUsername(@Param("name") String username);
}
위의 코드에서 @Param 어노테이션은 name 매개 변수의 이름을 지정합니다. 이 이름은 SQL 쿼리의 #{name} 매개 변수와 매핑됩니다. 이 어노테이션을 사용하여 매개 변수 이름을 지정하지 않으면 MyBatis는 매개 변수의 순서를 기반으로 쿼리 매개 변수를 매핑합니다.
따라서, 두 어노테이션은 서로 다른 용도로 사용되며, 프레임워크에 따라 다른 패키지에서 제공됩니다.
결론
IDE에서 import 할 때 잘 보고 선택해야 합니다. 이렇게 import를 잘못한 경우에는 런타임 단계에서만 오류를 발견할 수 있기 때문입니다.
'프로그래밍 > 이것저것 일하면서' 카테고리의 다른 글
IntelliJ IDEA에서 gradle 2.2(혹은 2.x) 버전이 안될때 버전 주의사항 (The project uses Gradle 2.12 which is incompatible with IDEA running on Java 10 or newer.) (0) | 2023.04.25 |
---|---|
프로그램 버그, 고치는 것만큼 중요한 버그 리포트 작성과 공유 (0) | 2023.03.30 |
[데이터베이스/오라클] 대량 insert 속도 개선 (0) | 2023.03.17 |
[데이터베이스] FK 쓸까, 말까? 오늘 외래키를 삭제한 이유 (0) | 2023.02.27 |
[오라클] 시퀀스, sysdate 등을 조회할 때 `FOM DUAL`을 쓰는 이유 (0) | 2023.02.27 |