[java] Hibernate에서 명명된(Named) 쿼리 작성 방법은?
다음은 Hibernate에서 명명된 쿼리를 작성하는 방법입니다.
hbm.xml
파일을 사용하는 경우:<hibernate-mapping> <query name="getUserById"> <![CDATA[ SELECT * FROM users WHERE id = :id ]]> </query> </hibernate-mapping>
위의 예제에서
getUserById
는 명명된 쿼리의 이름이고,:id
는 매개변수로 전달될 값입니다.- 애노테이션을 사용하는 경우:
@NamedQueries({ @NamedQuery( name = "getUserById", query = "SELECT u FROM User u WHERE u.id = :id" ) }) public class User { // ... }
위의 예제에서
getUserById
는 명명된 쿼리의 이름이고,:id
는 매개변수로 전달될 값입니다.@NamedQuery
애노테이션을 사용하여 쿼리를 작성하고,@NamedQueries
애노테이션을 사용하여 여러 개의 명명된 쿼리를 정의할 수 있습니다.
이렇게 작성된 명명된 쿼리는 Hibernate에서 다음과 같이 사용할 수 있습니다.
Session session = sessionFactory.openSession();
Query query = session.getNamedQuery("getUserById");
query.setParameter("id", 1);
List<User> users = query.getResultList();
위의 예제에서 getNamedQuery
메서드를 사용하여 명명된 쿼리를 가져옵니다. setParameter
메서드를 사용하여 쿼리의 매개변수 값을 설정하고, getResultList
메서드를 사용하여 쿼리를 실행하고 결과를 가져옵니다.
명명된 쿼리는 데이터베이스 질의를 간편하게 작성할 수 있는 방법으로 Hibernate에서 제공하는 기능 중 하나입니다. Hibernate를 사용하면 SQL 쿼리 작성에 대한 부담을 덜 수 있으며, 유지보수가 쉬운 코드를 작성할 수 있습니다.
참고 자료:
- Hibernate 5.5 Documentation: Named Queries