SpringBoot43 [Spring][JPA] ์ต๋ํ ์ฝ๊ฒ ์์๋ณด๋ @EntityGraph์ ๊ฐ๋ ์ฐ๊ด๊ด๊ณ๊ฐ ์๋ DB๊ฐ ์๋ ๊ฒฝ์ฐํ์ชฝ์ @EntityGraph๋ฅผ ์ฌ์ฉํ๋ค.@EntityGraph์ ์ญํ ์ด ๋ญ๊ธธ๋ ์ฐ๊ด๊ด๊ณ ํ ์ด๋ธ์ ํ์ํ ๊น? ๋ฏธ๋ฆฌ ์์์ผํ ๊ฐ๋ ์ค๋ช @EntityGraph๋ฅผ ์๊ธฐ ์ํด์, ํ๋ก์(Proxy)์ Lazy(์ง์ฐ๋ก๋ฉ), Eager(์ฆ์๋ก๋ฉ)์ ๋ํด์ ์์์ผํ๋ค.์๋ง @EntityGraph์ ๊ฐ๋ ์ด ๊ถ๊ธํ ์ด์ ๋, ์ฝ๋์ @ManyToOne๊ณผ ๊ฐ์ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ด๋ค.์ด๋ @ManyToOne์ fetch = FetchType.Lazy๋ฅผ ์ค์ ํ ๊ฒฝ์ฐ @EntityGraph๊ฐ ํ์ํ๋ค. → ์ด ์กฐํฉ์ ๋ง์ด ์ด๋ค๋ ๊ฑธ ์๊ณ ์ผ๋จ์ ๋์ด๊ฐ์. ์ ์ด ์กฐํฉ์ ๋ง์ด ์ฐ๋์ง ๋ค์ ์ค๋ช ํ๊ฒ ๋ค.JPA๊ฐ DB์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๋ ๋น์ฅ ํ์ ์๋ ์ฐ๊ด ๋ฐ์ดํฐ๋ ์ง์ง ๊ฐ์ฒด ๋์ ๊ฐ์ง .. 2026. 4. 3. [Spring][JPA] ์๋ฐ์ ๊ฐ์ฒด ์งํฅ์ ๋ ์ ์ด๋ฆฌ๋ @ManyToOne๊ณผ @OneToMany ํ๋์ ์ฌ์ฉ์๊ฐ์ฌ๋ฌ ๊ถํ์ ๊ฐ์ง ์ ์์ ๋@ManyToOne์ ๋ถ์๋ค.๊ทธ๋ ๋ค๋ฉด @ManyToOne์ด ๋ญ๊น?? @ManyToOne๋ค๋์ผ ๊ด๊ณ ๋งคํ์ผ๋ ์ฌ์ฉํ๋ค. ์ฌ๋ฌ ๊ฐ์ ์ํฐํฐ๊ฐ ํ๋์ ์ํฐํฐ๋ฅผ ์ฐธ์กฐํ ๋ ์ฌ์ฉํ๋ค.์์) ์ฌ์A, ์ฌ์B, ์ฌ์C๋ ๋ชจ๋ ๊ฐ๋ฐํ ์์์ด๋ค. ์ด๋ฐ ๊ฒฝ์ฐ ์ฌ๋ฌ๋ช (Many)์ ์ฌ์์ด ํ๋(One)์ ๋ถ์์ ์ํด์๋ค๊ณ ํ๋ค.์ธ๋ํค๋ ์ฃผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ์ Many ์ชฝ์ ์ํด์๋ค.JPA์์ ๊ถ์ฅํ๋ ๋ฐฉ์์ด๋ค. @OneToManyํ๋์ ์ํฐํฐ๊ฐ ์ฌ๋ฌ ๊ฐ์ ์ํฐํฐ๋ฅผ ์ฐธ์กฐํ ๋ ์ฌ์ฉํ๋ค.์ผ๋๋ค ๋จ๋ ๋งคํ๋ณด๋ค๋ ๋ณดํต ManyToOne๊ณผ ํจ๊ป ์๋ฐฉํฅ ์ฐ๊ด๊ด๊ณ๋ฅผ ๋งบ์ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ค.์์) ๊ฐ๋ฐํ์๋ ์ฌ์A, ์ฌ์B, ์ฌ์C๊ฐ ์ํด์๋ค. ์ด๋ฐ ๊ฒฝ์ฐ ํ๋(One)์ ๋ถ์์ .. 2026. 4. 2. [Spring][JPA] @Column์ ์ ์, ์์ฑ, ์์ ์ฝ๋ + int์ Integer๋ ์ด๋ป๊ฒ ๋ค๋ฅธ๊ฐ? ์ํฐํฐ๋ฅผ ์์ฑํ๋ค๋ณด๋ฉด,ํ๋์ @Column์ ๋ถ์ด๋ ์ฝ๋๋ฅผ ๋ณด๊ฒ ๋๋ค.๋์น๋ก ๋์ถฉ ์ด๋ค ๋๋์ธ์ง ์์ง๋ง๊ทธ๋๋ ์ ํํ ์๊ณ ๋์ด๊ฐ๋ณด์. @Column๊ฐ์ฒด์ ํ๋๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ์ปฌ๋ผ์ ์ด๋ป๊ฒ ๋งคํํ ์ง ์ ์ํ๋ ์ด๋ ธํ ์ด์ ์ด๋ค.์๋ฐ ๋ณ์๋ช ๊ณผ DB ์ปฌ๋ผ๋ช ์ด ๋ค๋ฅผ ๋, ์ปฌ๋ผ์ ์ ์ฝ์กฐ๊ฑด(๊ธธ์ด, NULL ์ฌ๋ถ ๋ฑ)์ ๊ฑธ๊ณ ์ถ์ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ค. @Column์ ์์ฑname: ๋งคํํ ํ ์ด๋ธ์ ์ปฌ๋ผ ์ด๋ฆ์ ์ง์ ํ๋ค.nullable: false๋ก ์ค์ ํ๋ฉด DDL ์์ฑ ์ NOT NULL ์ ์ฝ์กฐ๊ฑด์ด ๋ถ๋๋ค. unique: ํ ์ปฌ๋ผ์ ๊ฐ๋จํ ์ ๋ํฌ ์ ์ฝ์กฐ๊ฑด์ ๊ฑธ ๋ ์ฌ์ฉํ๋ค.length: ๋ฌธ์์ด(String) ํ์ ์ ๊ธธ์ด๋ฅผ ์ง์ ํ๋ค. (Varchar์ ๊ธธ์ด)insertable: false๋ก ์ค์ ํ๋ฉด ์.. 2026. 3. 28. [Spring][JAP] ์ํฐํฐ ํด๋์ค์ ์ฐ์ด๋ @Table๋ ๋ฌด์์ผ๊น? Entity๋ฅผ ์์ฑํ๋ฉด์DB์ ํ ์ด๋ธ๊ณผ ์ฐ๊ฒฐ์ํค๊ธฐ ์ํด@Table์ ์ฌ์ฉํ๋ค.@Table์ด ์ ํํ ์ด๋ค ์ญํ ์ ํ๋๊ฑธ๊น? @Table์ํฐํฐ ํด๋์ค๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๋ค ํ ์ด๋ธ๊ณผ ๋งคํ๋๋์ง๋ฅผ ๋ช ์ํ๋ ์ญํ ์ ํ๋ค.์ด ์ด๋ ธํ ์ด์ ์ ์๋ตํ๋ฉด, ๊ธฐ๋ณธ์ ์ผ๋ก ์ํฐํฐ ํด๋์ค์ ์ด๋ฆ์ ํ ์ด๋ธ ์ด๋ฆ์ผ๋ก ์ฌ์ฉํ๊ฒ ๋๋ค.→ ์์) @Table์ด ์ฝ๋์ ์๊ณ @Entity(name = "abc")๋ง ์กด์ฌํ๋ ๊ฒฝ์ฐ, @Entity์ name ์์ฑ์ ์ํด Entity์ Table ์ด๋ฆ์ด ๋ชจ๋ ๊ฒฐ์ ๋๋ค. @Table์ ์์ฑname : ๋งคํํ ํ ์ด๋ธ์ ์ด๋ฆ์ ์ง์ ํ๋ค.uniqueConstraints: ํ ์ด๋ธ ์์ฑ ์ ์ ๋ํฌ(Unique) ์ ์ฝ ์กฐ๊ฑด์ ์ค์ ํ๋ค.indexes: ํ ์ด๋ธ์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ๋ ์ฌ์ฉํ๋ค.ca.. 2026. 3. 27. [Spring, React] Keycloak์ด ์ ๊ณตํ๋ ๊ธฐ๋ฅ๊ณผ ์ฌ์ฉ ์ ์์์ผํ ๊ฐ๋ ์ ๋ฆฌ ๊ตฌ์ธ๊ตฌ์ง์ ์ดํด๋ณด๋ฉด,๋ณดํธ์ ์ผ๋ก ๊ฒฝ๋ ฅ์ง ๊ฐ๋ฐ์์๊ฒ ์๊ตฌ๋๋ ๊ฒ๋ค์ด ์๋ค.๊ทธ๋ฆฌ๊ณ ๊ทธ ์ค ๊ณตํต์ ์ผ๋ก ๋ฑ์ฅํ๋๊ฒ Keycloak์ด์๋ค.๋๋์ฒด Keycloak์ด ๋ญ๊ธธ๋ ๋ง์ ๊ณณ์์ ์ฌ์ฉํ๊ธธ ์ํ๋๊ฑธ๊น?Keycloak์ ๋ํด ์์๋ณด์. 1. Keycloak์ ๊ธฐ๋ฅ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ก๊ทธ์ธ ์์์ ์ฒ๋ฆฌํ๊ฑฐ๋ ์ฌ์ฉ์๋ฅผ ์ธ์ฆํ๊ณ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ ์ฅํ ํ์๊ฐ ์์ด Keycloak์ ํตํด ์ธ์ฆํ๋ค.Single Sign-On : Keycloak์ ํ ๋ฒ ๋ก๊ทธ์ธํ๋ฉด ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ํ ๋ ๋ค์ ๋ก๊ทธ์ธํ ํ์๊ฐ ์๋ค. ์ฌ์ฉ์๋ ์ฌ๋ฌ ์๋น์ค์ ๊ฐ๊ฐ ๋ก๊ทธ์ธ ํ ํ์๊ฐ ์์ด ํ ๋ฒ์ ์ธ์ฆ์ด๋ฉด ๋ชจ๋ ์ฐ๊ฒฐ๋ ์ฑ์ ์ด์ฉํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๊ธฐ๋ฅ์ ๋ก๊ทธ์์๋ ๊ทธ๋๋ก ์ ์ฉ๋๋ค.Identity Brokering and Social L.. 2026. 3. 19. [Spring, React] jsx์ css ํ์ผ ์ฐ๊ฒฐ, ์ฐ๊ฒฐ๋ css๊ฐ ์๋์ด๋ jsx ํ์ด์ง์ ์ํฅ์ ์ฃผ๋ ๊ฒฝ์ฐ ๊ณ ๊ฐ ๊ด๋ฆฌ ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์ฌ๊ด๋ฆฌ์ ๊ด๋ฆฌ ํ์ด์ง๋ฅผ ๋ง๋ค๊ณ ์๋ค.๋ถ๋ช ๊ฐ ํ์ด์ง์ css ํ์ผ์ ๋ค๋ฅด๊ฒ ์ฐ๊ฒฐ์์ผฐ๋๋ฐ,์ ์์ ์ด ๋์์ ๋๋๊ฑธ๊น? 1. ํ๋ฉด์๋์ ๊ฐ์ ํ๋ฉด์ ๋ง๋ค์๋ค. ์๋ ํ์ด์ง๋ ๊ด๋ฆฌ์๋ฅผ ๊ด๋ฆฌํ๋ ํ์ด์ง ์ค ๊ฒ์์ฐฝ ํ๋ฉด์ด๋ค. ์ด ํ์ด์ง๋ฅผ ๋ง๋๋๋ฐ, ์ ์ ๋ฏธ๋ฆฌ ๋ง๋ค์๋ ๊ณ ๊ฐ ๊ด๋ฆฌ ํ์ด์ง์ ๊ฒ์์ฐฝ ์ฝ๋๋ฅผ ๊ทธ๋๋ก ๊ฐ์ ธ์๋ค. 2. ๋ฌธ์ ์ ์์ธ๋ฌธ์ ๊ณ ๊ฐ ๊ด๋ฆฌ ํ์ด์ง ์ค ๊ฒ์์ ๋ด๋นํ๋ jsx๋ CustomerAdd.jsx์ด๋ค. ์ด jsx๋ CustomerTable.css์ ์ฐ๊ฒฐ๋์ด์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ด๋ฆฌ์ ๊ด๋ฆฌ ํ์ด์ง ์ค ๊ฒ์์ ๋ด๋นํ๋ jsx๋ AdminAdd.jsx์ด๋ค. ์ด jsx๋ PermissionSetting.css์ ์ฐ๊ฒฐ๋์ด์๋ค.๊ทธ๋ฐ๋ฐ PermissionSetting.css๋ฅผ.. 2026. 3. 17. ์ด์ 1 2 3 4 5 ยทยทยท 8 ๋ค์