[질문 내용] 안녕하세요. 수강생 김땡땡이라고 합니다. 추가로 작성해주신 Spring 3.0 버전 설정을 적용해서 build.gradle을 작성했는데 아래와 같은 에러가 발생하면서 테스트 에러가 발생합니다. 먼저 강의내용과 수업자료를 통해서 Springboot 3.0 이상 버전에서 설정해야되는 부분들을 추가했습니다. javax관련 오류는 뜨지 않습니다. 하지만 다른 문제가 생겼는데요.. gradle >other >compileQuerydsl 을 실행하면, 문제점이 있습니다. compileQuerydsl을 통해서 생성되는 Q Class는 build 경로에만 생기고 src/main에는 생성이 되지 않는다. <build 경로 아래에는 성공적으로 Qclass 가 생성되었습니다.> 하지만 src/main아래에는 생성되지 않았네요.. 그래도 build 경로아래에 QClass가 생성되어있으니 간단한 Test는 될 것 같아서 수업 내용을 따라서 작성하고 실행해봤는데. 위와 같은 에러가 발생했습니다. Qclass를 찾지못해 발생하는 오류같은데.. 왜 이런 현상이 생기는지 모르겠습니다. 강사님과 똑같이 작성했는데.. 단순 버전 문제일까요? 이런경우엔 gradle 버전도 상관이 있는건가요? 현재 사용하는 gradle 버전은 확인해보니 7.6입니다. 검색을 많이 해봐도 해결방안이 나오질 않습니다. 도움 부탁드립니다. =======================저의 build.gradle 설정======================== plugins { id 'java' id 'org.springframework.boot' version '3.0.2' id 'io.spring.dependency-management' version '1.1.0' id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } group = 'study' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' // Querydsl 추가 implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" } tasks.named('test') { useJUnitPlatform() } //querydsl 추가 시작 def querydslDir = "$buildDir/generated/querydsl" querydsl { jpa = true querydslSourcesDir = querydslDir } sourceSets { main.java.srcDir querydslDir } configurations { querydsl.extendsFrom compileClasspath } compileQuerydsl { options.annotationProcessorPath = configurations.querydsl } //querydsl 추가 끝 ======================= Hello Entity ============================= package study.querydsl.entity; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; import lombok.Getter; import lombok.Setter; @Entity @Getter @Setter public class Hello { @Id @GeneratedValue private Long id; }
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
안녕하세요 에러문제로 골머리를 앓다가 질문합니다 색상정보 DB에 넣기를 따라하면서 db를 만들고 색상 쿼리를 넣고 문제없이 따라 코딩했지만 처음보는 에러를 보고 혼자 해볼려고 노력했지만 안되네요 ㅠㅠ import 'dart:ffi' 여기에서 Error: Not found: 'dart:ffi' 이 종류의 에러가 나와서 크롬으로 앱이 실행이 안되네요 ㅠㅠ 어떤 문제일까요? 사진첨부합니다
======================================== [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] @GetMapping("hello-string") @ResponseBody public String helloString(@RequestParam("name") String name1){ return "hello"+name1; } 위와 같은 코드와 url에서 localhost:8080/hello-string?name=springboot를 입력받았을 때 파라미터 name은 key값으로서 value값인name1과 바인딩 되어 name1에 springboot를 저장 하기위한 용도로 사용되는 건가요? 다른 시각으로 name1을 key값로 springboot를 value값 생각해도 되는건가요? name - name1 - springboot (key) - (value) ................(key) - (value) 즉, 이렇게 이해해도 되는건가요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 주문 목록 검색, 취소 강의 2분 20초 즈음에 함수위임 정도의 간단한 행동은 컨트롤러에서 직접 호출하는 것도 고려해도 괜찮다라고 하셨는데, 이는 즉 컨트롤러가 레포지토리를 바로 의존하는 상황이여도 상황에 따라서는 괜찮다고 이해하여도 괜찮을까요 ?
안녕하세요! 혼자 복습 해보다가 얼떨결에 시도해본 방법인데, 매개변수에@RequestBody를 선언해주고, 포스트맨에서 Body쪽에 값을 넘겨주었는데 에러가 떴습니다. 그리고 @RequestBody를 제거한 뒤에, 포스트맨에서는 Param쪽에 값을 넘겨주니 작동이 됐습니다. 전 그동안 연습하면서 controller 쪽에 값을 받아올 때는 @RequestBody / @RequestParam / @PathVariable 셋중 하나 반드시 넣어줘야 한다고 배웠었는데요. 강의에서 아무것도 선언해주지 않아야 작동 되는 것을 보고 크게 혼란이 왔습니다. 강의의 경우 포스트맨에서 쿼리스트링으로 값을 받아오고 있으니 @RequestParam을 넣어줘야 하지 않나요? 이것도 넣으면 마찬가지로 에러가 뜹니다. 왜 그런건가요??
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
리프래시 토큰이 기간 만료되었다는 거는 어플 쪽에서 확인을 해서 재발급 요청을 보내야 하나요? 예를 들어서 페이로드에 있는 만료일을 어플 백그라운드에서 계속 체크하면서 만료되면 재발급 요청을 서버쪽에 보내는 건지 궁금 합니다. 액세스토큰이 만료일 때 리프레시 토큰까지 만료이면 바로 로그아웃인데 리프래시 토큰만 만료인 경우는 어떻게 검증하는지 궁금합니다
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
안녕하세요. 5강 6강을 수강하던 중 몇 가지 궁금증이 생겨 질문 남깁니다. 5강 GET API에서 사용된 CalculatorAddRequest -> 생성자 O, getter O 6강 POST API에서 사용된 CalculatorMultiplyRequest -> 생성자 X, getter O 1. GET API - CalculatorAddRequest에서 number1, number2 필드에 왜 final 키워드 가 필요한가요? 2. GET API - CalculatorAddRequest에서 생성자를 없애면 값이 0으로 바인딩되던데 왜그럴까요? 3. POST API - CalculatorMultiplyRequest에서는 왜 생성자가 없어도 값이 바인딩되는 걸까요? @RequestBody 어노테이션 때문일까요? 감사합니다.
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
간단하게 만들고있는데 ListView 를 사용했더니 아래와 같은 오류가 뜹니다. 뭐가 문제일까요?! RenderFlex children have non-zero flex but incoming height constraints are unbounded. Flexible , Expanded 사용해봤습니다 ㅠ
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예 [질문 내용] 'MemberService()' cannot be applied to '(com.example.demo.repository.MemberRepository)' error: constructor MemberService in class MemberService cannot be applied to given types; return new MemberService(memberRepository()); ^ required: no arguments found: Membe 적용할 수 없다는 에러가 나오는데 왜 나오는지 모르겠네요. 찾아보니 저만 이런 것 같은데 뭐가 문제일까요 package com.example.demo.config; import com.example.demo.repository.JdbcMemberRepository; import com.example.demo.repository.MemberRepository; import com.example.demo.repository.MemoryMemberRepository; import com.example.demo.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.sql.DataSource; @Configuration public class SpringConfig { @Autowired DataSource dataSource; @Bean public MemberService memberService(){ return new MemberService(memberRepository()); } @Bean public MemberRepository memberRepository(){ //return new MemoryMemberRepository(); return new JdbcMemberRepository(dataSource); } }
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
안녕하세요, 시간이 없어 어떻게든 꾸역꾸역 듣고 있는데도 많은 도움을 얻고 있습니다. _App 클래스에서 MaterialApp 위젯을 .router 생성자로 부르고 _App 클래스가 ConsumerWidget를 상속 받게끔 코드를 고치니 에러가 발생합니다. 가장 위에 보이는 에러는 이렇습니다. 다시 ConsumerWidget에서 StatelessWidget을 상속 받게 하니 에러는 발생하지 않습니다. .router 생성자를 빼도 에러가 발생하는 것을 보아 리버팟과 관련된 이슈인 듯 합니다. 저는 강의가 나온 후 조금 지난 시점에 듣기 시작해서 이미 리버팟이 2.1.대 버전일 때 시작했는데 강의와 시차가 있어 발생하는 문제일까요? 강사님 아니더라도 해결하신 분이 있다면 조언 부탁드립니다. 감사합니다. 에러 메시지 및 스택은 다음과 같습니다. [VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 2609 pos 20: '_debugCurrentBuildTarget == context': is not true. #0 AssertionError. doThrowNew (dart:core-patch/errors_patch.dart:51:61) #1 AssertionError. throwNew (dart:core-patch/errors_patch.dart:40:5) #2 BuildOwner.buildScope.<anonymous closure> (package:flutter/src/widgets/framework.dart:2609:20) #3 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2613:12) #4 RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:1110:13) #5 WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:945:7) #6 WidgetsBinding.scheduleAttachRootWidget.<anonymous closure> (package:flutter/src/widgets/binding.dart:925:7) #7 Timer._createTimer.<anonymous closure> (dart:async-patch/timer_patch.dart:18:15) #8 Timer. runTimers (dart:isolate-patch/timer_impl.dart:398:19) #9 _Ti<…> ======== Exception caught by widgets library ======================================================= The following assertion was thrown building UncontrolledProviderScope: Got a stack frame from package:stack_trace, where a vm or web frame was expected. This can happen if FlutterError.demangleStackTrace was not set in an environment that propagates non-standard stack traces to the framework, such as during tests. 'package:flutter/src/foundation/stack_frame.dart': Failed assertion: line 192 pos 7: 'line != '===== asynchronous gap ==========================='' The relevant error-causing widget was: UncontrolledProviderScope UncontrolledProviderScope:file:///Users/letmebelazy/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_riverpod-2.1.1/lib/src/framework.dart:250:12 When the exception was thrown, this was the stack: #2 StackFrame.fromStackTraceLine (package:flutter/src/foundation/stack_frame.dart:192:7) #3 MappedIterator.moveNext (dart:_internal/iterable.dart:391:20) #4 WhereTypeIterator.moveNext (dart:_internal/iterable.dart:869:20) #5 new GrowableList. ofOther (dart:core-patch/growable_array.dart:202:26) #6 new GrowableList.of (dart:core-patch/growable array.dart:152:26) #7 new List.of (dart:core-patch/array_patch.dart:51:28) #8 Iterable.toList (dart:core/iterable.dart:470:12) #9 StackFrame.fromStackString (package:flutter/src/foundation/stack_frame.dart:93:10) #10 StackFrame.fromStackTrace (package:flutter/src/foundation/stack_frame.dart:78:12) #11 FlutterErrorDetails.debugFillProperties (package:flutter/src/foundation/assertions.dart:712:57) #12 DiagnosticableNode.builder.<anonymous closure> (package:flutter/src/foundation/diagnostics.dart:2940:17) #13 DiagnosticableNode.builder (package:flutter/src/foundation/diagnostics.dart:2943:8) #14 _FlutterErrorDetailsNode.builder (package:flutter/src/foundation/assertions.dart:1289:56) #15 DiagnosticableNode.emptyBodyDescription (package:flutter/src/foundation/diagnostics.dart:2954:77) #16 DiagnosticsNode.toJsonMap.<anonymous closure> (package:flutter/src/foundation/diagnostics.dart:1632:13) #17 DiagnosticsNode.toJsonMap (package:flutter/src/foundation/diagnostics.dart:1661:6) #18 WidgetInspectorService._nodeToJson (package:flutter/src/widgets/widget_inspector.dart:1606:18) #19 WidgetInspectorService._reportStructuredError (package:flutter/src/widgets/widget_inspector.dart:937:44) #20 FlutterError.reportError (package:flutter/src/foundation/assertions.dart:1184:14) #21 _debugReportException (package:flutter/src/widgets/framework.dart:6493:16) #22 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4887:9) #23 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11) #24 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5) #25 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4859:5) #26 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5041:11) #27 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4853:5) ... Normal element mounting (7 frames) #34 UncontrolledProviderScopeElement.mount (package:flutter riverpod/src/framework.dart:309:11) ... Normal element mounting (9 frames) #43 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3863:16) #44 Element.updateChild (package:flutter/src/widgets/framework.dart:3592:18) #45 RenderObjectToWidgetElement._rebuild (package:flutter/src/widgets/binding.dart:1195:16) #46 RenderObjectToWidgetElement.mount (package:flutter/src/widgets/binding.dart:1164:5) #47 RenderObjectToWidgetAdapter.attachToRenderTree.<anonymous closure> (package:flutter/src/widgets/binding.dart:1111:18) #48 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2605:19) #49 RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:1110:13) #50 WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:945:7) #51 WidgetsBinding.scheduleAttachRootWidget.<anonymous closure> (package:flutter/src/widgets/binding.dart:925:7) (elided 6 frames from class AssertionError, class RawReceivePortImpl, class _Timer, and dart:async-patch) ==================================================================================================== ======== Exception caught by widgets library ======================================================= The following assertion was thrown building ProviderScope(state: ProviderScopeState#5859c): 'package:flutter/src/widgets/framework.dart': Failed assertion: line 4606 pos 14: 'owner!._debugCurrentBuildTarget == this': is not true. Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause. In either case, please report this assertion by filing a bug on GitHub: https://github.com/flutter/flutter/issues/new?template=2_bug.md The relevant error-causing widget was: ProviderScope ProviderScope:file:///Users/letmebelazy/StudioProjects/code_factory/lib/main.dart:9:5 When the exception was thrown, this was the stack: #2 Element.rebuild.<anonymous closure> (package:flutter/src/widgets/framework.dart:4606:14) #3 Element.rebuild (package:flutter/src/widgets/framework.dart:4609:6) #4 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4859:5) #5 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4853:5) #6 UncontrolledProviderScopeElement.mount (package:flutter riverpod/src/framework.dart:309:11) ... Normal element mounting (9 frames) #15 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3863:16) #16 Element.updateChild (package:flutter/src/widgets/framework.dart:3592:18) #17 RenderObjectToWidgetElement._rebuild (package:flutter/src/widgets/binding.dart:1195:16) #18 RenderObjectToWidgetElement.mount (package:flutter/src/widgets/binding.dart:1164:5) #19 RenderObjectToWidgetAdapter.attachToRenderTree.<anonymous closure> (package:flutter/src/widgets/binding.dart:1111:18) #20 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2605:19) #21 RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:1110:13) #22 WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:945:7) #23 WidgetsBinding.scheduleAttachRootWidget.<anonymous closure> (package:flutter/src/widgets/binding.dart:925:7) (elided 6 frames from class AssertionError, class RawReceivePortImpl, class _Timer, and dart:async-patch) ==================================================================================================== ======== Exception caught by widgets library ======================================================= The following assertion was thrown attaching to the render tree: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 4606 pos 14: 'owner!._debugCurrentBuildTarget == this': is not true. Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause. In either case, please report this assertion by filing a bug on GitHub: https://github.com/flutter/flutter/issues/new?template=2_bug.md When the exception was thrown, this was the stack: #2 Element.rebuild.<anonymous closure> (package:flutter/src/widgets/framework.dart:4606:14) #3 Element.rebuild (package:flutter/src/widgets/framework.dart:4609:6) #4 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4859:5) #5 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5041:11) #6 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4853:5) #7 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3863:16) #8 Element.updateChild (package:flutter/src/widgets/framework.dart:3592:18) #9 RenderObjectToWidgetElement._rebuild (package:flutter/src/widgets/binding.dart:1195:16) #10 RenderObjectToWidgetElement.mount (package:flutter/src/widgets/binding.dart:1164:5) #11 RenderObjectToWidgetAdapter.attachToRenderTree.<anonymous closure> (package:flutter/src/widgets/binding.dart:1111:18) #12 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2605:19) #13 RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:1110:13) #14 WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:945:7) #15 WidgetsBinding.scheduleAttachRootWidget.<anonymous closure> (package:flutter/src/widgets/binding.dart:925:7) (elided 6 frames from class AssertionError, class RawReceivePortImpl, class _Timer, and dart:async-patch) ====================================================================================================
1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 아니오 [질문 내용] 이전 도메인 설계 강의 듣기로 연관관계에 있는 두 엔티티의 관계를 변경하려면, 주인엔티티의 값을 변경하면 된다고 하셨고, mappedBy 가 선언된 종속(?)엔티티는 값을 변경하더라도 연관관계가 변경되지 않는다고 하셨던것 같은데요. 그럼 연관관계를 설정할때 주인엔티티에만 설정해주면 되지 않나요? 이 강의에서 나오는 연관관계 메소드에서는 Order 엔티티에도 member를 세팅해주고, Memeber 엔티티의 List<Order>에도 order 를 add해주도록 되어 있어서 왜 둘다 세팅하는지 문의드립니다.
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
이번 다트 업데이트에서 플러터와 다트가 업데이트가 되면서 여러 기능이 생긴 걸로 아는데 다트에서 Pattern Matching 이란 기능이 도입 된 것으로 압니다. 반환 값이 여러 타입일 수 있다는 걸로 해석을 했는데 정확히 무슨 기능이며 어디에 활용할 수 있을까요? Json 직렬화 혹은 역직렬화에 많이 활용될까요?
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예 [질문 내용] h2 db 설치 연결 확인 후, home 에 test.mv .db 파일을 확인해야 된다면서 ll ll -arlth 이렇게 들어가시는데 이게 뭔가요? 여기서 막혀서 답답하네요. 맥 써본 적도 없고 실무도 윈도우로 하는데 어지럽네요. ll 이 dir 이라는건 아는데 -arlth 는 처음 봐요. home이 어딜 말하는건지 모르겠어요.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 데이터베이스 스키마 자동 생성 부분 강의 관련해서 궁금한 점이 생겨 질문 드립니다. 강의에서 생성된 DDL은 개발 장비에서만 사용해야 하며, 운영 장비에서는 사용하면 안 된다. 라고 말씀해주셨습니다. 그리고, 생성된 DDL은 운영서버에서는 사용하지 않거나, 적절히 다듬 은 후 사용 이라고 강의 자료에 나와 있는데요. 그렇다면, 실제 현업에서는 운영 서버에 새로운 테이블을 create 하거나, 기존 테이블을 update(칼럼 추가 혹은 변경 등...) 하는 경우에 어떻게 하는지 궁금합니다. 강의 내용 + 서칭에 따르면, 로컬에서 DB 스키마 자동 생성 -> 검증 및 정제 -> 최종 스키마를 DB 툴을 이용해서 추출 -> 최종 스키마인 "create table ~~"을 테스트 DB에 적용(이 때, JPA 를 통해서가 아닌, 스키마 자체를 적용해야 함) -> QA 진행 , 검증 및 정제 -> 최종 스키마를 DB 툴을 이용해서 추출 -> 최종 스키마인 "create table ~~"을 테스트 DB에 적용(이 때, JPA 를 통해서가 아닌, 스키마 자체를 적용해야 함)을 운영 장비에 적용 하는 방식으로 진행하는 걸까요? (물론, 여건에 따라, 테스트 서버도 JPA DB 스키마 자동 생성 기능으로 처리할 수도 있을 듯 합니다.) create 뿐만 아니라, update 또한 운영서버에 적용하면 안되며, update 또한 테스트서버에 적용하는 것은 지양한다고 하셨습니다. 운영 서버의 소스코드가 (JPA DB 자동 스키마 생성기능을 통해) 테스트 서버, 운영 서버의 DB create, update 권한을 가진다는 것 자체에 대해 우려하시는 건가요? 아니면, DB 관련하여 컨트롤하는 기능 중, JPA 에서 설정하지 못하는 것이 있어서 그런건가요? 말씀해주신 결과적인 사건들을 통해 위험하다 는 것은 알겠는데, 그 구체적인 이유를 설명하라고 한다면, 아직 정확하게 말 할 수 없을 듯 하여, 질문 남깁니다. 긴 글 읽어주셔서 감사합니다.