๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ191

[Querydsl] SpringDataJPA + Querydsl + ์‚ฌ์šฉ์ž ์ •์˜ ์ธํ„ฐํŽ˜์ด์Šค ์‚ฌ์šฉ์ž ์ •์˜ ์ธํ„ฐํŽ˜์ด์Šค ์ž‘์„ฑ public interface MemberRepositoryCustom { List search(MemberSearchCondition condition); } SpringDataJPA๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์„œ๋“œ ์™ธ์— ํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์„ ๋•Œ ์‚ฌ์šฉ์ž ์ •์˜ ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„ public class MemberRepositoryImpl implements MemberRepositoryCustom { private final JPAQueryFactory queryFactory; public MemberRepositoryImpl(EntityManager em) { this.queryFactory = new JPAQueryFactory(em); } @Override //ํšŒ์›๋ช…, ํŒ€๋ช…, ๋‚˜์ด(ag.. 2024. 1. 7.
[Querydsl] DTO ์กฐํšŒ ๋ฐฉ๋ฒ• ์ˆœ์ˆ˜ JPA์—์„œ DTO ์กฐํšŒ List result = em.createQuery( "select new study.querydsl.dto.MemberDto(m.username, m.age) " + "from Member m", MemberDto.class) .getResultList(); new ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•จ DTO์˜ package์ด๋ฆ„์„ ๋‹ค ์ ์–ด์ค˜์•ผํ•จ ์ƒ์„ฑ์ž ๋ฐฉ์‹๋งŒ ์ง€์›ํ•จ Querydsl ๋นˆ ์ƒ์„ฑ(Bean population) ๊ฒฐ๊ณผ๋ฅผ DTO ๋ฐ˜ํ™˜ํ•  ๋•Œ ์‚ฌ์šฉํ•จ 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ง€์›ํ•จ ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ ํ•„๋“œ ์ง์ ‘ ์ ‘๊ทผ ์ƒ์„ฑ์ž ์‚ฌ์šฉ [ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ - Setter] List result = queryFactory .select(Projections.bean(MemberDto.class, member.user.. 2024. 1. 7.
[Oracle] SQL ํ•จ์ˆ˜ NVL ํ•จ์ˆ˜ NULL๊ฐ’์„ ํฌํ•จํ•˜๋Š” ์ปฌ๋Ÿผ์„ ์ง€์ •๋œ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š”๋ฐ ์‚ฌ์šฉ. ์ผ์‹œ์ ์œผ๋กœ NULL์ธ ์ปฌ๋Ÿผ์˜ ๊ฐ’์„ ๋Œ€์ฒดํ•˜๊ธฐ์œ„ํ•œ๊ฒƒ NVLํ•จ์ˆ˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐํƒ€์ž…์— ์ ์šฉ ๊ฐ€๋Šฅ. NVLํ•จ์ˆ˜๋Š” ์‚ฌ์šฉํ•  ๋•Œ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฐ’์˜ ๋ฐ์ดํ„ฐํƒ€์ž…๊ณผ ์ผ์น˜ํ•ด์•ผํ•จ. NVL ( A, B ) A: NULL๊ฐ’์„ ํฌํ•จํ•˜๊ณ ์žˆ๋Š” ์ปฌ๋Ÿผ/์‹ B: ๋ณ€๊ฒฝํ•˜๋ ค๋Š” ๊ฐ’ (๋Œ€์ฒดํ•  ๊ฐ’) NVLํ•จ์ˆ˜์˜ ๋ฌธํ˜• ์ „ํ™˜ ์˜ˆ์‹œ NUMBER NVL( commission_pct , 0 ) DATE NVL( start_date, ‘17/01/01’ ) CHAR, VARVHAR2 NVL( mailid , ‘์—†์Œ’ ) ๋ฏธ๊ตญํ‘œ์ค€์ธ COALESCE ํ•จ์ˆ˜๋„ ๊ฐ™์€ ๊ธฐ๋Šฅ. DECODE ํ•จ์ˆ˜ ์˜ค๋ผํด ์‹œ๊ทธ๋‹ˆ์ณ ํ•จ์ˆ˜. ๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋Œ๋ ค์ฃผ๋Š” ํ•จ์ˆ˜. DECODE ( ํ˜•์‹, ๋น„๊ต๊ฐ’1, ๊ฒฐ๊ณผ๊ฐ’1.. 2024. 1. 6.
[Oracle] OBJECT ์˜ค๋ธŒ์ ํŠธ Object ์šฉ์–ด์˜ ์ข…๋ฅ˜์™€ ๊ธฐ๋Šฅ ํ…Œ์ด๋ธ” ํ–‰&์—ด์˜ ์กฐํ•ฉ. ๊ธฐ๋ณธ์ €์žฅ๋‹จ์œ„. 2์ฐจ๋ฐฐ์—ด. ๋ทฐ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•œ ๋ถ€๋ถ„์ง‘ํ•ฉ. ReadOnly. ๊ฐ€์ƒํ…Œ์ด๋ธ” ์‹œํ€€์Šค ์ž๋™์œผ๋กœ ๊ณ ์œ ํ•œ ์ˆซ์ž๊ฐ’์„ ์ƒ์„ฑ ์˜ˆ์‹œ) ๊ฒŒ์‹œํŒ์—์„œ ๋ฒˆํ˜ธ ์ž๋™์œผ๋กœ ์˜ฌ๋ผ๊ฐ ์ธ๋ฑ์Šค ์ฟผ๋ฆฌ ์†๋„๋ฅผ ํ–ฅ์ƒ. ๋นจ๋ฆฌ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•จ. โ‘ ์ •๋ ฌ๋˜์–ด์žˆ๊ณ  โ‘ก์œ„์น˜๋ฅผ ์•Œ๋ ค์คŒ ํŠธ๋ฆฌ๋กœ ๊ตฌ์„ฑ. ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ๊ผญ ์‚ฌ์šฉ๋˜๋Š”๊ฒƒ์€ ์•„๋‹˜. ์‹œ๋…ธ๋‹˜ Object์˜ ๋˜๋‹ค๋ฅธ ์ด๋ฆ„. Alias์—ญํ•  ๋ณ„๋ช…์„ ์‚ฌ์šฉํ•˜๋ฉด ์˜คํƒ€๋ฐฉ์ง€์— ์œ ์šฉํ•˜๋‹ค ํ”„๋กœ๊ทธ๋žจ ์œ ๋‹› SQL, PL/SQL๋ฌธ์œผ๋กœ ์ž‘์„ฑํ•œ Procedure, Function, Trigger, Pakage SEQUENCE ์‹œํ€€์Šค ์ž๋™์œผ๋กœ ์œ ๋‹ˆํฌํ•œ number์„ ์ƒ์„ฑํ•จ.(์ค‘๊ฐ„์— GAP๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์€ ์žˆ์Œ) ๊ณต์œ  ๊ฐ€๋Šฅํ•œ ์˜ค๋ธŒ์ ํŠธ. ์ผ๋ฐ˜์ ์œผ๋กœ PK์ƒ์„ฑ์„ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•จ... 2024. 1. 6.
[๋ถ€ํŠธ์ŠคํŠธ๋žฉ] ํ™”๋ฉด ์‰ฝ๊ฒŒ ๊พธ๋ฏธ๊ธฐ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ํ™ˆํŽ˜์ด์ง€์—์„œ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ ์ฐพ๊ธฐ https://getbootstrap.kr/docs/5.3/components/buttons/ ๋ฒ„ํŠผ ๋‹ค์–‘ํ•œ ํฌ๊ธฐ, ์ƒํƒœ ๋“ฑ์„ ์ง€์›ํ•˜๋Š” ํผ, ๋Œ€ํ™”์ƒ์ž ๋“ฑ์˜ ์ž‘์—…์— Bootstrap์˜ ์‚ฌ์šฉ์ž ์ง€์ • ๋ฒ„ํŠผ ์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ•˜์„ธ์š”. getbootstrap.kr HTMLํƒœ๊ทธ์— ์ ์ ˆํžˆ class๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ๊พธ๋ฏธ๊ธฐ ์›ํ•˜๋Š” ํŽ˜์ด์ง€ ๋ฏธ๋ฆฌ ๊ตฌ์ƒํ•˜๊ธฐ ๋ ˆ์ด์•„์›ƒ์„ ์žก๊ณ  ๊ฐ ํƒœ๊ทธ์— ๋ถ€ํŠธ์ŠคํŠธ๋žฉ class๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค ํƒ€์ž„๋ฆฌํ”„ ํƒœ๊ทธ๋ฅผ ์ ์šฉํ•ด์„œ ํ”„๋กœ์ ํŠธ์™€ ์—ฐ๊ฒฐํ•ด์„œ ์‚ฌ์šฉํ•˜๊ณ  ์ดํ›„ ๋‹ค๋“ฌ์–ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋จ 2024. 1. 5.
[Oracle] DCL ๋ฐ์ดํ„ฐ ์ œ์–ด์–ด ๊ถŒํ•œ Privilege ์‹œ์Šคํ…œ ๊ถŒํ•œ ํŠน์ •ํ•œ SQL๋ฌธ์žฅ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ ์˜ค๋ธŒ์ ํŠธ ๊ถŒํ•œ ํŠน์ •ํ•œ Object์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œ์–ดํ•˜๋Š” ๊ถŒํ•œ ์‹œ์Šคํ…œ ๊ถŒํ•œ System Privilege ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ˆ˜์ค€์˜ ๊ถŒํ•œ ์‚ฌ์šฉ์ž์™€ Role์— ๋ถ€์—ฌ๋  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ ๊ถŒํ•œ ์ข…๋ฅ˜๋Š” 80๊ฐœ ์ด์ƒ. ์‹œ์Šคํ…œ ๊ถŒํ•œ์€ ๋Œ€๊ฐœ ๊ด€๋ฆฌ์ž(DBA)๊ฐ€ ๋ถ€์—ฌํ•จ. ์˜ค๋ธŒ์ ํŠธ ๊ถŒํ•œ Object Privilege ๊ด€๋ฆฌ์ž(DBA)๋Š” ํŠน์ •ํ•œ ์˜ค๋ธŒ์ ํŠธ์— ๋Œ€ํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ—ˆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ. ์˜ค๋ธŒ์ ํŠธ ๊ถŒํ•œ์€ ์˜ค๋ธŒ์ ํŠธ ํƒ€์ž…์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•จ. ์˜ค๋ธŒ์ ํŠธ ์†Œ์œ ์ž๋Š” ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์—๊ฒŒ ํŠน์ • ์˜ค๋ธŒ์ ํŠธ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Œ. ์—ญํ•  Role ๊ถŒํ•œ ๋ถ€์—ฌ์™€ ์ ‘๊ทผ์ œ์–ด ๊ด€๋ฆฌ๋ฅผ ์†์‰ฝ๊ฒŒ ํ•˜๋ ค๊ณ  ์—ฐ๊ด€๋œ ๊ถŒํ•œ๋“ค์˜ ์ง‘ํ•ฉ์„ ๋ฌถ์–ด์„œ ์ •์˜ํ•ด ๋†“์€ ๊ฒƒ. Role์ด๋ž€ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ—ˆ๊ฐ€ํ•  ์ˆ˜.. 2024. 1. 5.
[Oracle] DDL ๋ฐ์ดํ„ฐ ์ •์˜์–ด DDL ๋ช…๋ น์–ด์˜ ์ข…๋ฅ˜ ๋ฐ ์„ค๋ช… ๋ช…๋ น์–ด ์„ค๋ช… CREATE TABLE ์ƒˆ๋กœ์šด ํ…Œ์ด๋ธ” ์ƒ์„ฑ DROP TABLE ๊ธฐ์กด ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ ๋ฐ ๋ชจ๋“  ๋กœ์šฐ๋ฅผ ์‚ญ์ œ ALTER TABLE ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์„ ๋ณ€๊ฒฝํ•จ -์ปฌ๋Ÿผ์˜ ์ถ”๊ฐ€/์ˆ˜์ • -์ œ์•ฝ์กฐ๊ฑด ์ถ”๊ฐ€/์‚ญ์ œ/ํ™œ์„ฑํ™”/๋น„ํ™œ์„ฑํ™” TRUNCATE ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๋Š” ๋‚จ๊ธฐ๊ณ  ๋ชจ๋“  ํ–‰์„ ์‚ญ์ œํ•จ RENAME Object์˜ ์ด๋ฆ„์„ ๋ฐ”๊ฟˆ COMMENT ํ…Œ์ด๋ธ”์ด๋‚˜ ์ปฌ๋Ÿผ์— ์ฃผ์„๋ฌธ ๋‹ฌ๊ธฐ DDL ๋ช…๋ น์–ด๋Š” ์‹คํ–‰ ์‹œ Auto COMMIT ๋˜๊ธฐ ๋•Œ๋ฌธ์— ROLLBACK๋  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ฃผ์˜ํ•ด์„œ ์‹คํ–‰ SQL ์‚ญ์ œ โœ‚โœ‚ 3์ด์‚ฌ ๋ช…๋ น์–ด ๋ถ€๋ฅ˜ ๋ช…๋ น์–ด ์„ค๋ช… ๋กค๋ฐฑ DDL (๋ฐ์ดํ„ฐ ๊ตฌ์กฐ) DROP TABLE ํ…Œ์ด๋ธ” ์ „์ฒด ์‚ญ์ œ. ๊ตฌ์กฐ ์‚ญ์ œ, ํ–‰ ์‚ญ์ œ. ๋ถˆ๊ฐ€๋Šฅ TRUNCATE ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ์‚ญ์ œ. ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋Š” ๋‚จ๊น€. ๋ถˆ๊ฐ€๋Šฅ .. 2024. 1. 5.