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);

이 방식이 숫자를 이용해 위치를 지정해 값을 넣는 방식이다. 하지만 이런 방식은 중간에 하나 끼워넣으면 헷갈리가 장애가 발생할 수 있으니 문자 기준 파라미터 바인딩을 이용하면 된다.