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);
โš ๏ธ **GitHub.com Fallback** โš ๏ธ