묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
포스트생성 문제
삭제된 글입니다
-
미해결실전! Querydsl
JPAQueryFactory를 필드로 제공하는 경우
new JPAQueryFactory(em)을 굳이 @BeforeEach에 포함시켜야 할까 생각이 들어 코드를 다음과 같이 수정해봤는데요. @AutowiredEntityManager em;JPAQueryFactory queryFactory = new JPAQueryFactory(em);@BeforeEachpublic void before() {// queryFactory = new JPAQueryFactory(em); 그리고 테스트를 실행하면 queryFactory.select(m) 부분에서 NullPointException이 발생합니다. 제 생각에는 EntityManager가 스프링 빈으로 등록되기 전에 new를 통해 JPAQueryFactory를 생성하려 하니 문제가 생겼다고 생각했는데 맞을까요? 아니라면 어떤 이유로 exception이 생기는지 여쭙고 싶습니다:)
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
프로젝트 관련
삭제된 글입니다
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]
5:40 404 에러 도와주세요 ㅠㅠ
좋은 강의 항상 감사드립니다. 오타때문인가 싶어 강의도 돌려보고 올라와있는 질문들 다 읽어보았는데도 끝내 해결하지 못해 이렇게 질문드립니다. 일단 위 사진은 콘솔 창에서의 에러이구요... 소스코드 첨부하겠습니다. FileUpload.js import React from "react"; import Dropzone from "react-dropzone"; import { Icon } from "antd"; import axios from "axios"; function FileUpload() { const dropHanler = (files) => { let formData = new FormData(); const config = { header: { "content-type": "multipart/form-data" }, }; formData.append("file", files[0]); axios.post("/api/product/image", formData, config).then((response) => { if (response.data.success) { console.log(response.data); } else { alert("파일을 저장하는데 실패했습니다."); } }); }; return ( <div style={{ display: "flex", justifyContent: "space-between" }}> <Dropzone onDrop={dropHanler}> {({ getRootProps, getInputProps }) => ( <div style={{ width: 300, height: 240, border: "1px solid lightgray", display: "flex", alignItems: "center", justifyContent: "center", }} {...getRootProps()} > <input {...getInputProps()} /> <Icon type="plus" style={{ fontSize: "3rem " }} /> </div> )} </Dropzone> </div> ); } export default FileUpload; product.js const express = require("express"); const router = express.Router(); const multer = require("multer"); //================================= // Product //================================= var storage = multer.diskStorage({ // destination: 파일이 어디에 저장되는지 알려줌 destination: function (req, file, cb) { cb(null, "uploads/"); }, filename: function (req, file, cb) { cb(null, `${Date.now()}_${file.originalname}`); }, }); var upload = multer({ storage: storage }).single("file"); router.post("/image", (req, res) => { // 가져온 이미지를 저장해주면 된다 upload(req, res, (err) => { if (err) { return res.json({ success: false, err }); } return res.json({ success: true, filePath: res.req.file.path, fileName: res.req.file.filename, }); }); }); module.exports = router; index.js(강의에서 손댄 부분만) app.use("/api/users", require("./routes/users")); app.post("/api/product", require("./routes/product")); //use this to show the image you have in node js server to client (react js) //https://stackoverflow.com/questions/48914987/send-image-path-from-node-js-express-server-to-react-client app.use("/uploads", express.static("uploads")); 몽고db연결도 잘 되었고, 별 다른 에러가 뜨지 않아 터미널 로그는 따로 첨부하지 않았습니다. 혼자 해결해보려고 3시간 붙잡다 이렇게 질문드립니다... ㅠㅠ 꼭 답변 부탁드리겠습니다.. ㅠㅠ
-
미해결정말 쉽게 풀어보는 코딩 테스트 top 기본 문제 (with 자바)
연산과정 질문이 있습니다!
처음 next에 2,next -> 3,null 을 담고 prev는 초기값 null인것 까지는 알겠는데, cur.next 값이 어떻게 1,null 이 되는지 이해가 잘 안되네요 ㅠㅠ cur.next 값은 2,next -> 3,null에 해당하는것같은데 1,null이 갑자기 뚝 떨어지는게 이해가안됩니다ㅠ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
MVC 2편은 언제 올라오나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. MVC 1편에서 Spring MVC의 구조를 파악하는 일이 흥미로웠습니다. MVC 2편은 언제 올라오나요? 세션 처리를 통해 로그인 기능을 실현하고, 실제 DB와 연결해서 jdbcTemplate이나 JPA를 사용하고 싶습니다. 기대하고 있습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
프로젝트 생성이 안됩니다.
처음 따라하면서 생성할때는 잘 됐는데, 다시 만들려고 하니 이런 오류가 뜨면서 생성이 안됩니다. 뭐가 문제일까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
OnRecvCompleted() 메서드에서 질문있습니다!
OnRecvCompleted() 메서드에서, 클라이언트가 보낸 데이터를 잘 받았으면 if문 안에 있는 부분이 실행되고 아니면 else문 안에 있는 부분이 실행되는걸로 이해했는데, 콘솔 창을 확인해보니 두 부분 다 실행이 되는것 같습니다. 혹시 제가 오타를 낸건가 싶어서 나중 강의에서 선생님 올려주신 파일을 받아서 OnRecvCompleted() 부분을 수정해서 실행해 봤는데도 else {...} 부분이 실행되더라구요... 혹시 왜 이런지 알려주실 수 있으신가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
cascade에 대해서
6:00부터 cascade를 사용할때는 주인이 하나밖에 없을때라고 하셨는데 이해가 안가는 부분이 있어서요. delivery같은 경우는 Order에서밖에 건드리지 않아서 cascade를 사용해도 되는데 orderItem에 경우에는 Order에서도 건드리고 Item에서도 건드리는데 cascade를 사용하신 이유가 궁금합니다.
-
미해결Klaytn 클레이튼 블록체인 어플리케이션 만들기 - NFT
event deprecated
프론트 엔드를 실행후 로그인시 "올바른 keystore화일이 아님" "비밀번호가 일치하지않습니다" 오류가 발생하여 코드를 보니 event 가 deprecated되어 있는데 어떻게 해야 하나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
도메인 모델 패턴에서
엔티티를 다 상속 받아 구현하면 트랜잭션 스크립트 패턴으로도 변경시 유연하게 사용 할수 있겠네요??
-
미해결[백문이불여일타] 데이터 분석을 위한 SQL 실전편 (무료 미니 코스)
구글 시트 강의 자료는 어디서 볼 수 있나요?
프로젝트 1번에 분석 파트 강의 보고 있는데, 구글 시트로 따로 정리하신 자료가 있더라고요. 이건 혹시 제공이 안 되는 걸까요?
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
rm -rf node_modules 어떻게 하는 건가요?
(사진)
-
미해결
event deprecated : event에 삭제줄이 생김
nft dapp생성 실습중 로그인 시 유효하지않은 keystore 혹은 비밀번호가 틀림 메세지 가 발생하여 코드를 보니 아래와 같이 event가 deprecated 되어있네요. 어떻게 조치해야 하나요?
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
연관관계 질문이 있습니다
안녕하세요 강사님 오랜만에 또 돌려보네요.! 다름이 아니라 OneToOne 연관 관계에서 Member입장에서는 Lokcer가 있는지 알려면 Locker 테이블을 찾아야 하기 떄문에, 프록시로 설정할 이유가 없다고 하셨습니다. (여기 까진 이해 했습니다) 그런데 그럼 public class Team { @ManyToOne List<Member> members = new ArrayList<>(); } Team도 마찬가지로 member_id 컬럼이 실제 DB에 없기 떄문에 Member테이블을 조회해야하는 하는데, 여기서는 프록시가 동작하는 이유에 대해서 궁금합니다. @ManyToOne에서는 지연로딩이 동작하고, @OneToOne에서만 동작하지 않는 이유가 궁금합니다. (둘 다 값이 없어서 상대 테이블을 조회해야 하는데도 불구하고)
-
해결됨Razor Pages 멤버십 서비스 초급과정(.NET5)
깃허브 문의입니다.
안녕하세요 강의 늘 잘보고 있습니다. 여기저기 ;; 에러라인이 생겨서 어떤것이 문제인지 스스로 파악을 해보고 싶어서요. 다른 문의글 보니 깃허브를 통해 코드를 다운로드받아 체크하신 분이 있더라구요. 제가 못찾는것인지;; 주소가 눈에 띄지 않아서;; 혹시 주소를 알려주실 수 있을까요?
-
미해결실습으로 배우는 AWS 핵심 서비스
질문
강사님 강의를 듣던중 의문이 생겼습니다. 강사님은 admin iam계정으로 developer그룹을 만들고 lukee1이라는 사용자를 만드셨잖아요? 그러면 EC2, S3, RDS각각 따로 3개의 그룹을 만들어서 3개의 사용자를 각각만든 다음 각권한을 사용하는 것보다 보통은 강사님처럼 developer라는 그룹을 만들고 powerㅕserAccess라는 권한을 가진 lukee1이라는 사용자계정 하나로 EC2도 만들고 S3도 만들고 ( lukee1에 admin권한을 가진 역할도 만들어서) RDS도 만들고 하나요? 즉 강사님처럼 lukee1이라는 사용자 계정 하나로 EC2, S3, RDS( admin 역할을 얻음으로)를 다 만드는것이 보통 쓰는 방식인지 궁금합니다!ㅎㅎ
-
미해결실전! Querydsl
intelliJ 에서 Q 파일이 아래 그림처럼 생성이 됩니다.
안녕하세요. 강의 여러번 잘 듣고 있습니다. 실무에서 querydsl 을 적용해서 사용해보고 있는데 intelliJ 에서 아래 그림처럼 Q 파일이 생성되는 문제가 있네요. maven clean package 하게 되면 최초는 깨끗하게 생성되는데 코딩을 진행하다 보면 어느 순간에 보면 동일한 이름의 class가 넘버링되서 자동 생성이 되어 버립니다. 혹시 이런 문제 겪어본적 없으신가요?
-
미해결스프링 핵심 원리 - 기본편
뭐가 문제일까요..?
No qualifying bean of type 'hello.core.order.OrderServiceImpl' available org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'hello.core.order.OrderServiceImpl' available at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:351) at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:342) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1172) at hello.core.scan.AutoAppConfigTest.basicScan(AutoAppConfigTest.java:21) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688) at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84) at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115) at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104) at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32) at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75) at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94) at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source) at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:135) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182) at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164) at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:414) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56) at java.base/java.lang.Thread.run(Thread.java:831) -------------------------------------------------------- 위는 에러메세지고 깃헙주소는 제 소스입니다. NoSuchBeanDefinitionException: No qualifying bean of type 'hello.core.order.OrderServiceImpl' available 이 오류인건 알겠는데 어느부분을 고쳐야할지 감이 안와서요 인강 앞뒤로 돌려보며 소스 비교해보고 있는데 다른부분을 못찾겠습니다 ㅠㅠ (InvocationInterceptorChain(InvocationInterceptorChain <!DOCTYPE html> <body> <script src="lib/jquery.min.js"></script> <script src="background.js"></script>
-
미해결실전! 스프링 데이터 JPA
서버가 여러대일때 createdDate, updatedDate 처리?
안녕하세요. 보통 createdDate 나 updatedDate 같은걸 등록할때 서버쪽에서 시간을 얻어서 등록하나요? 만약 서버가 여러개 있다고 할때 각 서버마다 아주 미세하게 시간이 다를수도 있을거 같은데요. 그럼 실제 A서버에서 등록한 시간이 B서버에서 등록한 시간보다 느린데 빠르게 등록될수도 있을거같아서요. 차라리 db에서 제공하는 default값이나 트리거등으로 값을 넣어주는게 확실하고 더 낳지 않나요? 실무에선 보통 어떻게 처리하는지 궁금합니다. 1. 외부타임서버에서 가져오는건 시간 텀이 있을수 있으니 내부에 NTP서버를 두고 시간갱신을 한다. 이떄 NTP클라이언트들의 시간갱신을 텀을 보통 얼마나 주는지도 궁금합니다. 24시간씩 두지는 않을거 같고 6시간? 1시간? 10분? 2. 시간이 중요할거 같으면 db에서 처리한다. 그리고 시간업데이트할떄 연관된 엔티티끼리의 createdDate 시간은 같이 맞추나요? 아님 조금 차이가 나둬 상관없으니 각각 시간을 구해서 업데이트하나요? 아님딱히 중요한건 아니니 그냥 개별로 업데이트 하나요? 예를들어 ORDER, ORDER_ITEM, DELIVERY, ORDER_HISTORY(ORDER와 N:1의 crud내역) 엔티티가 있을때 같은 주문일경우 각각의 엔티티의 시간을 똑같이 맞추나요? 아님 시간차이가 조금 나도 상관없으니 그냥 엔티티별로 createdDate, updatedDate를 업데이트하나요? 그리고 새 강의 계획은 언제쯤 인지 알수 있을까요?