๊ต์ก์
์ : ์ฐ์ํํ์ ๋ค ๊ธฐ์ ์ด์ฌ, ์นด์นด์ค, SKํ๋๋
์ ์: ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ
์ง์ง ์ค๋ฌด์ ํ์ํ ์ ๋๋ก ๋ ๊ฐ๋ฐ์๊ฐ ๋ ์ ์๋๋ก, ๊ต์กํ๋ ๊ฒ์ด ์ ์ ๋ชฉํ์ ๋๋ค.
์ ์ ๊ฐ๋ฐ ์ธ์ ์ด์ผ๊ธฐ
EO ์ธํฐ๋ทฐ ์์
ํ๊ตญ ๊ฐ๋ฐ์ ์ต๊ณ 1ํ๊ฐ์ฌ ๊น์ํ์ ์ธ์ [1๋ถ]
ํ๊ตญ ๊ฐ๋ฐ์ ์ต๊ณ 1ํ๊ฐ์ฌ ๊น์ํ์ ์ธ์ [2๋ถ]
๊ฐ๋ฐ๋ฐ๋ฅ - ์๊ณจ ์ฒญ๋ ๊ฐ๋ฐ์ ๋๋ค
์ทจ์ ๊ณผ ์ด์ง์ ๋ํ ๊ณ ๋ฏผ ํด๊ฒฐ
Courses
Reviews
- Kim Young-han's Java Tutorial - Your First Step into Java with Code
- Spring for Beginners - Learn Spring Boot, Web MVC, and DB Access Technology with Code
- Kim Younghan's Practical Java - Basics
- Java ORM Standard JPA Programming - Basics
- Spring for Beginners - Learn Spring Boot, Web MVC, and DB Access Technology with Code
Posts
Q&A
์กฐ์ธ์ฟผ๋ฆฌ์์์ ์ธ๋ฑ์ค ์ค๊ณ
์๋ ํ์ธ์. hee duk kim๋์กฐ์ธ์ด๋ผ๋ ๊ฒ์ด FK๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฐ๊ฒฐ๋๊ธฐ ๋๋ฌธ์ ํด๋น ์ปฌ๋ผ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ๋ฑ์ค๊ฐ ํ์ํฉ๋๋ค.์กฐ์ธ๊ณผ ๊ด๋ จ๋ ์ต์ ํ๋ ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑ๋ฅ ์ต์ ํ์์ ๋ค๋ฃฐ ์์ ์ ๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- Likes
- 0
- Comments
- 2
- Viewcount
- 17
Q&A
์ธํ ๋ฆฌ์ ์ด ์ค์ ์ต์ ํ ๊ด๋ จ ํ์ธ ๋ถํ ๋๋ฆฝ๋๋ค!
์๋ ํ์ธ์. ์ธํ๋ ์ต์ ๋ฒ์ ์ผ๋ก ๋ฐ์ผ์ ๋ ๊ด์ฐฎ์ต๋๋ค^^
- Likes
- 0
- Comments
- 2
- Viewcount
- 34
Q&A
SingletonService๊ฐ JVM์ด ๋ฐ ๋ ์์ฑ๋๋๊ฒ ๋ง๋์?
์๋ ํ์ธ์. ํ๋ถ๋๊ฒฐ๋ก ๋ถํฐ ๋ง์๋๋ฆฌ๋ฉด, SingletonService ๊ฐ์ฒด๋ โJVM์ด ์คํ๋๋ ์๊ฐโ ์์ฑ๋๋ ๊ฒ์ด ์๋๋ผ, SingletonService ํด๋์ค๊ฐ ์ฒ์ ์ค์ ๋ก ์ฌ์ฉ๋์ด ์ด๊ธฐํ๋ ๋ ์์ฑ๋ฉ๋๋ค.์๋ฅผ ๋ค์ดpublic class Main { public static void main(String[] args) { System.out.println("main ์์"); }}์ด ๊ฒฝ์ฐ JVM์ Main ํด๋์ค๋ ์ฌ์ฉํ์ง๋ง, SingletonService ํด๋์ค๋ ์์ง ์ฌ์ฉํ ํ์๊ฐ ์์ต๋๋ค. ๊ทธ๋์ SingletonService ํด๋์ค๊ฐ ๋ก๋ฉ/์ด๊ธฐํ๋์ง ์๊ณ , ๋น์ฐํ ์์ฑ์๋ ํธ์ถ๋์ง ์์ต๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- Likes
- 0
- Comments
- 2
- Viewcount
- 66
Q&A
์์ฃผ ์์ ์ ์คํ ์ ๋ฌ๋๋ฆฝ๋๋ค.
ํฐํ๋จ๋ ๊ฐ์ฌํฉ๋๋ค :) ๋ค์ ํจ์น์ ๋ฐ์ํ ๊ฒ์!
- Likes
- 0
- Comments
- 2
- Viewcount
- 60
Q&A
order_product ๊น๋ง๊ท๋ฐ
์๋ ํ์ธ์. ๊น์ง๊ท๋์๊ฐํ์ ๋ด์ฉ์ด ๋ง์ต๋๋ค :)๊ฐ์ฌํฉ๋๋ค.
- Likes
- 0
- Comments
- 2
- Viewcount
- 45
Q&A
SpringBoot 4.0.6 ๋ฒ์ ์์ PackageLogTracePostProcessor exception
์๋ ํ์ธ์. ๋ง์ฑํธ๋Configuration๋ ํ๋ก์ ๋์์ ์ถ๊ฐ๋๋ ๋ฌธ์ ๊ฐ ์๋ ๋ฏ ํฉ๋๋ค.๋ค์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํด์ Configuration์ ์ ์ธํ๋ ์ฝ๋๋ฅผ ์ ์ฉํด์ฃผ์ธ์ ๐๊ฐ์ฌํฉ๋๋ค. package hello.proxy.app.config.v4_postprocessor.postprocessor; import lombok.extern.slf4j.Slf4j; import org.jspecify.annotations.Nullable; import org.springframework.aop.Advisor; import org.springframework.aop.framework.ProxyFactory; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.AnnotationUtils; import org.springframework.util.ClassUtils; @Slf4j public class PackageLogTracePostProcessor implements BeanPostProcessor { private final String basePackage; private final Advisor advisor; public PackageLogTracePostProcessor(String basePackage, Advisor advisor) { this.basePackage = basePackage; this.advisor = advisor; } @Override public @Nullable Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { log.info("param beanName={} bean={}", beanName, bean.getClass()); // ํ๋ก์ ๋์ ์ฌ๋ถ ์ฒดํฌ // ํ๋ก์ ์ ์ฉ ๋์์ด ์๋๋ฉด ์๋ณธ ๊ทธ๋๋ก ์งํ String packageName = bean.getClass().getPackageName(); if (!packageName.startsWith(basePackage)) { return bean; } // ์ค์ ํด๋์ค(@Configuration)๋ ํ๋ก์ ๋์์์ ์ ์ธ // ์ค์ ํด๋์ค๋ฅผ ํ๋ก์๋ก ๊ฐ์ธ๋ฉด @Bean ํฉํ ๋ฆฌ ๋ฉ์๋ ํธ์ถ์ด ๊นจ์ง๋ค // (CGLIB๋ก ๊ฐํ๋ ์ค์ ํด๋์ค๋ผ getUserClass๋ก ์๋ณธ ํด๋์ค๋ฅผ ์ป์ด ์ด๋ ธํ ์ด์ ์ ๊ฒ์ฌ) Class userClass = ClassUtils.getUserClass(bean.getClass()); if (AnnotationUtils.findAnnotation(userClass, Configuration.class) != null) { return bean; } // ํ๋ก์ ๋์์ด๋ฉด ํ๋ก์๋ฅผ ๋ง๋ค์ด์ ๋ฐํ ProxyFactory proxyFactory = new ProxyFactory(bean); proxyFactory.addAdvisor(advisor); Object proxy = proxyFactory.getProxy(); log.info("create proxy: target={} proxy={}", bean.getClass(), proxy.getClass()); return proxy; } }
- Likes
- 0
- Comments
- 3
- Viewcount
- 91
Q&A
[DB์ค๊ณ] ํํด ์ ์ ์ ๊ตฌ๋ ์ ๋ณด ์ ์ง ๋ฐ ์ด๋ฉ์ผ ๋ง์คํน ๊ด๋ จ ์ง๋ฌธ์ ๋๋ค.
์๋ ํ์ธ์. obi๋์ฐ์ ์ ์๊ฐ์ ๋น์ฆ๋์ค ์ ์ฑ ์ ๋จ์ํ๊ฒ ๋ณ๊ฒฝํ๋๊ฒ ๊ฐ์ฅ ์ข์ ๊ฒ ๊ฐ์์.ํ์ง๋ง ๊ทธ๊ฒ ์ด๋ ค์ด ์ํฉ์ด๋ผ๋ฉด, ์ค๊ฐ ํ ์ด๋ธ์ ํ๋ ๋ง๋ค์ด์ ํด๊ฒฐํ๋ ๊ฒ์ด ํ์ํฉ๋๋ค.์๋ฅผ ๋ค์ด์ users -> subscribers -> subscriptions ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ๊ฒ์ด์ง์. users: ๋ก๊ทธ์ธ ๊ณ์ subscribers: ๊ตฌ๋ ๊ถ๋ฆฌ๋ฅผ ๊ฐ์ง ์ฃผ์ฒดsubscriptions: ํ์ฌ ๊ตฌ๋ ์ ๋ณด users๋ ํํด ํ ์ฌ๊ฐ์ ํ๋ฉด ์๋ก ์๊ธธ ์ ์์ผ๋, ๊ตฌ๋ ์ด ์ง์ ๋ฐ๋ผ๋ณด๋ฉด ์ ๋ฉ๋๋ค.๋์ ๊ตฌ๋ ์ ์ค๋ ์ ์ง๋๋ subscriber_id๋ฅผ ๋ฐ๋ผ๋ณด๊ฒ ํฉ๋๋ค.๊ทธ๋์ ์ฌ๊ฐ์ ์์๋ ์ users ๋ก์ฐ๋ฅผ ๋ง๋ค๊ณ , ๊ธฐ์กด subscriber_id์ ๋ค์ ์ฐ๊ฒฐํฉ๋๋ค.์ฆ, ํต์ฌ์ ๊ตฌ๋ ์ FK๋ฅผ user_id๊ฐ ์๋๋ผ subscriber_id๋ก ๋ฐ๊พธ๋ ๊ฒ์ ๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- Likes
- 0
- Comments
- 1
- Viewcount
- 56
Q&A
๊น์ํ๋ก๋๋งต์ผ๋ก ๋ฐฑ์๋๊ฐ๋ฐ์๊ฐ ๋ ์ ์๋์?
์๋ ํ์ธ์. ํธ์ค๋์ด ๋ก๋๋งต์ ์ด๋ฏธ ์ค๋ฌด์ ์๋ ์ฃผ๋์ด ๊ฐ๋ฐ์ ๋ถ๋ค๋ ๋ง์ด ๋ฃ๊ณ ์๋ ๋ก๋๋งต์ด์ด์, ๋ชจ๋ ๊ณผ์ ์ ์ถฉ๋ถํ ์ํํ๋ค๋ฉด ์ค๋ฌด์ ํ์ํ ๊ฐ๋ฐ์๊ฐ ๋ ์ ์๋ค ์๊ฐํฉ๋๋ค.์ทจ์ ์ ๊ธฐ์ค์ผ๋ก ์๊ฐํ๋ฉด๋ค๋ฉด ์๊ฐํ์ ๋๋ก ์งํํ์๋ ๋ค์ ๋ด์ฉ์ ์ฐธ๊ณ ํด์ ์ ์ฒด ๋ก๋๋งต์ ์งํํ์๋ ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค.์ ์ฒด ๋ก๋๋งต์ ๋ค์์ ์ฐธ๊ณ ํด์ฃผ์ธ์.https://youtu.be/8hsFZg-i6wo?si=pIfnDiSRvja5LkvS ๊ฐ์ฌํฉ๋๋ค ๐
- Likes
- 0
- Comments
- 2
- Viewcount
- 127
Q&A
๋ฌธ์ 2๋ฒ
์๋ ํ์ธ์. Choi๋์ด๋ฐ ๋ถ๋ถ์ ํ๋ฒ์ ๋ค ์๋ฒฝํ๊ฒ ๋ต์ ๊ตฌํ๋ ๊ฒ์ ์ฝ์ง ์์ต๋๋ค.๋ง์ ๋ถ๋ค์ด ๊ถ์ฅํ๋ ๋ฐฉ๋ฒ์ ์ฐ์ ์ฒ์๋ถํฐ ๋๊น์ง ๊ฐ์๋ฅผ ๋ค ๋ฃ๊ณ , ๊ทธ ๋ค์์ ํ๋ฒ ์ ๋ ๋ณต์ตํ๋ฉด์ ์ ๋ฆฌํ๋ ๊ฒ์ ๋๋ค. (์ฌ์ค ์ด๋์ ๋ ์ต์ํด์ง์ด ํ์ํฉ๋๋ค.)๋์์ด ๋์๊ธธ ๋ฐ๋์ ๐
- Likes
- 0
- Comments
- 2
- Viewcount
- 101
Q&A
SpringBoot 4.0.6 ๋ฒ์ ์์ PackageLogTracePostProcessor exception
์๋ ํ์ธ์. ๋ง์ฑํธ๋๋์์ ๋๋ฆฌ๊ณ ์ถ์ง๋ง ์ง๋ฌธ ๋ด์ฉ๋ง์ผ๋ก๋ ๋ต๋ณ์ ๋๋ฆฌ๊ธฐ ์ด๋ ต์ต๋๋ค.์ค์ ๋์ํ๋ ์ ์ฒด ํ๋ก์ ํธ๋ฅผZIPํ์ผ๋ก ์์ถํด์ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ๋ก ๊ณต์ ํด์ ๋งํฌ๋ฅผ ๋จ๊ฒจ์ฃผ์ธ์.๊ตฌ๊ธ ๋๋ผ์ด๋ธ ์ ๋ก๋ ๋ฐฉ๋ฒ์ ๋ค์์ ์ฐธ๊ณ ํด์ฃผ์ธ์.https://bit.ly/3fX6ygx ์ฃผ์: ์ ๋ก๋์ ๋งํฌ์ ์๋ ๊ถํ ๋ฌธ์ ๊ผญ ํ์ธํด์ฃผ์ธ์์ถ๊ฐ๋ก ๋ค์ ๋ด์ฉ๋ ์ฝ๋ฉํธ ๋ถํ๋๋ฆฝ๋๋ค.1. ๋ฌธ์ ์์ญ์ ์คํํ ์ ์๋ ๋ฐฉ๋ฒ2. ๋ฌธ์ ๊ฐ ์ด๋ป๊ฒ ๋ํ๋๋์ง์ ๋ํ ์์ธํ ์ค๋ช (์ค๋ฅ ํ๋ฉด, ์ค๋ฅ ๋ก๊ทธ ํฌํจ)๋งํฌ: ๊ณต์ ์ํฌํฐ์ฆ๋งํฌ: ์์ฃผํ๋ ์ง๋ฌธ๊ฐ์ฌํฉ๋๋ค.
- Likes
- 0
- Comments
- 3
- Viewcount
- 91








