SQL에서 동적으로 값을 집어넣을 수 있듯, JPA에서도 마찬가지로 파라미터 바인딩이 가능하다.
문자 기준 파라미터 바인딩
SELECT m FROM Member m where m.username=:username
query.setParameter("username", param);
문자 기준 파라미터 바인딩이라고 하니 뭔가 어감이 이상한데, 위의 코드를 그대로 동적으로 들어갈 위치의 이름을 지정해서 거기에 값을 집어넣는 것이다.
위치 기준 파라미터 바인딩
SELECT m FROM Member m where m.username=?1
query.setParameter(1, usernameParam);
이 방식이 숫자를 이용해 위치를 지정해 값을 넣는 방식이다. 하지만 이런 방식은 중간에 하나 끼워넣으면 헷갈리가 장애가 발생할 수 있으니 문자 기준 파라미터 바인딩을 이용하면 된다.