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

์ „์ฒด ๊ธ€193

[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ณด์•ˆ] ๊ฐ•์˜ ๋ชฉ์ฐจ K-MOOC ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ณด์•ˆ ๊ฐ•์˜ ์ฒญ๊ฐ• ๊ฐ•์˜์š”๊ฐ• ์ค‘ ์ง‘์ค‘ํ•ด์„œ ๋“ค์„ ๋ถ€๋ถ„ 5์ฃผ์ฐจ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ณด์•ˆ ๊ฐœ์š” 6์ฃผ์ฐจ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ (DBMS) ๋ณด์•ˆ 7์ฃผ์ฐจ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ ๋ณด์•ˆ 9์ฃผ์ฐจ. ์ ‘๊ทผ์ œ์–ด(1) 10์ฃผ์ฐจ. ์ ‘๊ทผ์ œ์–ด(2) 11์ฃผ์ฐจ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•”ํ˜ธํ™” ๊ฐœ์š” 12์ฃผ์ฐจ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•”ํ˜ธํ™” ์„ค๊ณ„ ๋ฐ ๊ตฌ์ถ• ๊ฐ•์˜ ์š”๊ฐ• 1์ฃผ์ฐจ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ์š” ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๊ฐœ๋…/์‹œ์Šคํ…œ/์ถ”์ƒํ™”๋ ˆ๋ฒจ/๋ชจ๋ธ/์„ค๊ณ„ 2์ฃผ์ฐจ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ (DBMS) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ ํ™˜๊ฒฝ DBMS ๊ฐœ์š”/ ์‚ฌ์šฉ์ž ๋ฐ ๊ธฐ๋Šฅ / DBMS ์–ธ์–ด/ ์ข…๋ฅ˜ ๋ฐ ํŠน์ง• 3์ฃผ์ฐจ. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (RDB) ๊ฐœ์š”/ Key์ข…๋ฅ˜/ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ ์กฐ๊ฑด/ ๊ด€๊ณ„๋Œ€์ˆ˜ 4์ฃผ์ฐจ. ๊ตฌ์กฐํ™” ์งˆ์˜์–ด (SQL) ๊ตฌ์กฐํ™” ์งˆ์˜์–ด ๊ฐœ๋…/ DDL/ DML/ DCL .. 2024. 1. 11.
[Querydsl] ๋™์ ์ฟผ๋ฆฌ - Where์—์„œ ๋‹ค์ค‘ ํŒŒ๋ผ๋ฏธํ„ฐ ์‚ฌ์šฉํ•˜๊ธฐ ๋™์ ์ฟผ๋ฆฌ - Where์—์„œ ๋‹ค์ค‘ ํŒŒ๋ผ๋ฏธํ„ฐ ์‚ฌ์šฉ ์กฐ๋ฆฝ์„ ํ•  ์ˆ˜ ์žˆ์Œ, ๋ฉ”์„œ๋“œ๋ฅผ ๋‹ค๋ฅธ ์ฟผ๋ฆฌ์—์„œ ์žฌํ™œ์šฉ ๊ฐ€๋Šฅํ•จ ์ฟผ๋ฆฌ ์ž์ฒด์˜ ๊ฐ€๋…์„ฑ์ด ๋†’์•„์ง null ์ฒดํฌ๋Š” ์ฃผ์˜ํ•ด์„œ ์ฒ˜๋ฆฌํ•ด์•ผํ•จ @Test public void ๋™์ ์ฟผ๋ฆฌ_WhereParam() throws Exception { String usernameParam = "member1"; Integer ageParam = 10; List result = searchMember2(usernameParam, ageParam); Assertions.assertThat(result.size()).isEqualTo(1); } private List searchMember2(String usernameCond, Integer ageCond) { return queryFacto.. 2024. 1. 8.
[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.