Native Query - samerook/samerook_test GitHub Wiki
[Get Started](Get Started)
๊ธฐ๋ณธ์ ์ผ๋ก CRUD ์์
์ ํ ๋ JPA ๊ธฐ๋ณธ API๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ QL์ ์ด์ฉํ์ฌ ์ํํ๋ค.
๊ทธ๋ฌ๋ ํน์ DBMS์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋๋ก ํ๊ธฐ ์ํด Native SQL ์ฌ์ฉ์ ์ง์ํ๋ค.
entityManager.createNativeQuery() ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ Native SQL์ ์คํํ ์ ์๋ค.
JPA SPEC
StringBuffer qlBuf = new StringBuffer();
qlBuf.append("SELECT * ");
qlBuf.append("FROM DEPARTMENT ");
qlBuf.append("WHERE DEPT_NAME like :condition ");
qlBuf.append("ORDER BY DEPT_NAME");
Query query = em.createNativeQuery(qlBuf.toString(),Department.class);
query.setParameter("condition", "%%");
List deptList = query.getResultList();
์์ ๊ฐ์ด ์ ์๋ SQL๋ฌธ์ ํตํด ์กฐํ ์กฐ๊ฑด์ ๋ง๋ Department ๊ฐ์ฒด์ List๊ฐ ๋ฆฌํด๋๋ค.
WHERE์ ์์ ':'์ ์ฌ์ฉํ์ฌ Named Paramenter๋ฅผ ํตํด ์กฐํ ์กฐ๊ฑด์ ์์ฑํ ์ ์๋ค.
์กฐํ ์กฐ๊ฑด์ ๊ฐ์ Query์ setParameter() ๋ฉ์๋๋ฅผ ํตํด ์ง์ ํด ์ฃผ๊ณ ์๋ค.
๋ํ, createNativeQuery์ ๋๋ฒ์ฌ ์ธ์๋ก ๋ฆฌํด๋ฐ๊ณ ์ํ๋ Entity ํด๋์ค(Department.class)๋ฅผ ์ง์ ํ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์๋ํ์ธ ์ฝ๋
Query query = entityManager.createNativeQuery("SELECT * FROM Music WHERE artist = :artist", Music.class);
Music music = (Music) query.setParameter("artist", "Sunyong").getSingleResult();
System.out.println(music);