묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품내역 조회 시 에러 발생..
안녕하세요 강의 잘 듣고 있습니다.다름이 아니라 상품주문 후 상품내역을 조회하는 과정에서 org.hibernate.LazyInitializationException: could not initialize proxy [jpabook.jpashop.domain.Item#2] - no Sessionat org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:176) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final]at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:322) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final]at org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor.intercept(ByteBuddyInterceptor.java:45) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final]at org.hibernate.proxy.ProxyConfiguration$InterceptorDispatcher.intercept(ProxyConfiguration.java:95) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] 이라는 에러가 발생하여 확인결과@GetMapping("/orders") public String orderList(@ModelAttribute("orderSearch") OrderSearch orderSearch, Model model) { List<Order> orders = orderService.findAll(orderSearch); model.addAttribute("orders", orders); return "order/orderList"; }해당 요청에서 <tr th:each="order : ${orders}"> <td th:text="${order.id}"></td> <td th:text="${order.member.name}"></td> <td th:text="${order.orderItems[0].item.name}"></td> <td th:text="${order.orderItems[0].orderPrice}"></td> <td th:text="${order.orderItems[0].count}"></td>orderList.html의 ${order.orderItems[0].item.name}item을 찾지 못하여 public List<Order> findAll(OrderSearch orderSearch) { String jpql = "select o From Order o join o.member m"; // String jpql = "select o From Order o join fetch o.member m join fetch o.orderItems oi join fetch oi.item i"; // 아이템 정보를 끌어오기 위해서 join fetch 사용!! boolean isFirstCondition = true;jpql에서 fetch join으로 item을 강제로 불러오니 해결됐습니다. 그런데 질답 게시판을 보니 다른분들은 해당 문제가 발생하지 않는듯 하여 무엇이 문제인지 혹시 알수 있을까 해서 질문드립니다... 강의대로 코드를 그대로 따라치진 않았고 나름대로 이것저것 바꿔가면서 코드를 작성하긴 했으나 해당 문제는 아닌것 같았습니다. https://cantcoding.tistory.com/78해당 티스토리의 글과 비슷한 유형의 문제인듯 하여 계속 생각해봤으나 배움이 아직 부족한 탓인지 원인을 잘 모르겠습니다 https://drive.google.com/file/d/1u7Jsc8jrtwNeJZ1ycPJb2RtgvX7sghG6/view?usp=sharing구글드라이브 링크입니다.
-
미해결[리뉴얼] 타입스크립트 올인원 : Part1. 기본 문법편
안녕하세요 제로초님
interface Arr<T> { forEach(callback: (aaa: T) => void): void; } const test: Arr<string> = ['hello', 'world']; console.log( 'test', test.forEach((item) => console.log('item', item)) );안녕하세요 제로초님 하나 궁금한것이 생겨서 여쭤보고싶습니다.위의 사진은 정상적으로 작동하는 코드입니다.그런데 아래 사진 같은경우는 아래 사진에 첨부한 에러 메세지가 나오고 있습니다.둘의 차이점은 함수 이름을 forEach 를 사용했을때 에러(X)아래 사진은 함수 이름을 forEachTest로 사용 한 것 뿐인데forEachTest 라는 함수는 현재 에러가 나고있는데요,해당 코드에서 forEach와 forEachTest의 차이점은 무엇인가요??제가 생각했을땐 forEach에서도 에러가 나야 하지 않을까? 였습니다.해당 내용이 이해가 되질 않아서 답변주시면 감사하겠습니다. interface Arr<T> { forEachTest(callback: (aaa: T) => void): void; } const test: Arr<string> = ['hello', 'world']; console.log( 'test', test.forEachTest((item) => console.log('item', item)) );
-
미해결실전! 스프링 데이터 JPA
트랜잭션을 서비스에서 걸어주는 게 더 좋은 방식인가요?
스프링 데이터 JPA는 repository에 걸려있지만서비스단에서 걸어주고 전파를 받아서 사용하는 방식을 쓰는게 로직에 문제가 있을 때 더 안전하지 않을까 생각되는데 제가 생각한게 맞을까요?
-
미해결[리뉴얼] 타입스크립트 올인원 : Part1. 기본 문법편
redux에서 타입스크립트 적용할 때
type TReport = { [key: string]: string[]; }; interface IinitialState { report: TReport[] } const initialState = { report: [], //<- [{}] 로 해야 오류가 안남, 현재는 오류 };강의를 듣고 조금씩 적용을 해보면서,위 코드는 redux store의 처음데이터 initialState를 설정하는 건데요,저는 처음에 빈배열([ ])로 시작하길 바라는데, IinitialState를 초기 state의 타입으로 지정해주면 반드시 ([{}]) 의 형식으로 지정해줘야 합니다.union을 통해 회피하기 위해서interface IinitialState { report: TReport[] | [] }이렇게 해보기도 했는데 interface에서는 union이 안 먹힌다는게 생각났습니다. 보통 빈 객체로 시작하고 싶은 이런 경우에는 어떻게 타입을 지정하나요?
-
해결됨디자인 시스템 with 피그마
앞에 $ 표시는 저는 없는데 무엇인가요?
상동
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Post시 넘어가는 데이터에 질문있습니다
안녕하세요 강의 잘 듣고있습니다다름이 아니라 아이템 추가 폼에서 입력을하고 Post를 할때어떤 데이터가 @Modelattribute Item에 저장되는지 궁금합니다. <select th:field="*{deliveryCode}" class="form-select"> <option value="">==배송 방식 선택==</option> <option th:each="deliveryCode : ${deliveryCodes}" th:value="${deliveryCode.code}" th:text="${deliveryCode.displayName}">FAST</option> </select> 이코드에서 deliveryCode는 String타입이 아니라 DeliverCode타입이라 객체가 넘어가는줄알았는데 item에 String타입으로 넘어가 저장되더라고요 th:values의 값이 넘어가는 건가요? 저는 th:values는 비교하는 역할만 하는 줄 알고있었는데 어떤방식으로 Post값이 넘어가는지 궁금합니다
-
미해결
게시물 수정관련 End-Point 질문입니다.
익명게시판 토이프로젝트를 진행중입니다.엔드포인트는 /posts/posts/:postId 두가지로 나누어서 진행중인데게시물 수정기능과 관련해서 권한 인증체크에 대한 url설정을 어떻게 해야될지 몰라서 질문 드립니다.단일 테이블의 프로젝트이며 테이블에는pkuserName (유저가 게시글입력시 등록하는 자유이름)password( 유저의 비밀번호가 아닌 게시물의 비밀번호입니다.)제목본문으로 이루어져있습니다.삭제 기능의 경우 삭제 요청이 왔을때 권한 인증을 하면 되지만수정의 경우에는 권한 인증 후 게시물 수정화면으로 넘어가게 하고싶은데현재는 게시물 수정 완료후 비밀번호와 수정내용을 입력 받아 한번에 처리하는 형태로 구현하였습니다.구현하길 바라는것은게시물 수정버튼을 누른다.비밀번호 입력을한다. (이때 사용되는 url설계에 대한 질문입니다.)비밀번호가 일치하면 수정화면으로 넘어간다.수정완료 후 완료버튼을 누르면 수정이된다.현재 생각나는것은 controll uri를 사용하는걸로 생각되는데 혹시 보통 어떻게 구현할까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Junit5 테스트 관련 질문있습니다.
강사님 제가 스프링부트, 스프링시큐리티, JPA로 간단한 프로젝트를 만들면서 mockmvc를 이용해 컨트롤러 쪽 테스트를 하는데 특정 메소드가 해당 메소드만 테스트를 했을 때에는 잘 수행이 되는데 해당 메소드가 속한 테스트 클래스를 전체 수행했을 때에 다른 메소드들은 다 정상 작동하는데 특정 한 메소드만 자꾸 NoSuchElementException 에러가 납니다. 혹시 이유를 알 수가 있을까요?..
-
미해결스프링 핵심 원리 - 고급편
모든 api 엔드포인트에 로그를 위해 포인트컷 적용
Api가 많은 단일 프로젝트 내에 로그를 남기기 위해 모든 컨트롤러 메소드에 포인트컷을 적용하면 성능에 대한 이슈가 있을 것 같은데요.로그 예제처럼 aop를 사용해서 로그를 남기는게 일반적인가요?
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
JDBC와 Connection 인터페이스 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.각각의 데이터베이스마다 커넥션을 연결하는 방법, SQL을 전달하는 방법, 결과를 응답받는 방법이 모두 다르기 때문에 JDBC 인터페이스가 등장하였다고 하셨습니다.Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD); 이 부분을 통해서는 라이브러리에 등록된 DB 드라이버 목록에서 커넥션을 지원하는 드라이버에서 커넥션을 얻을 수 있다고 하셨습니다. 커넥션 또한 인터페이스이기에, 지원하는 드라이버로부터 실제 구현된 커넥션을 얻을 수 있는 것으로 이해했습니다.Connection, Statement, ResultSet 모두 속성을 확인해보니, 모두 다 인터페이스였습니다.그렇다면 JDBC는 Connection 인터페이스, Statement 인터페이스, ResultSet 인터페이스가 있는 인터페이스의 모음이라고 생각하면 될까요?DriverManager.getConnection(URL, USERNAME, PASSWORD); 로부터 데이터베이스 드라이버를 받는데, 그렇다면 이 코드를 통해서 JDBC 드라이버를 받는 것이라고도 할 수 있나요? (JDBC의 구현 드라이버를 받는 과정도 이 과정에서 이뤄지는지 궁금합니다.)
-
미해결냉동코더의 알기 쉬운 Modern Android Development 입문
안드로이드 스튜디오 Chipmunk 에는 Analyze가 없습니다
안드로이드 스튜디오 Chipmunk 에는 Analyze가 없습니다. 따라서 MAD Score를 만드는 탭 역시 찾을 수가 없습니다 ㅠ
-
미해결Jenkins를 이용한 CI/CD Pipeline 구축
edowon0623/docker이미지에 /etc/sysconfig/docker와 docker-storage라는 파일이 없는거같아요
ssh로 접속해서 vi /etc/sysconfig/docker 했는데 docker라는 파일이 없어요이건 어찌어찌 따라쳐서 저장했지만...sed -i -e 's/overlay2/vfs/g' /etc/sysconfig/docker-storage해당명령어 실행하니sed: can't read /etc/sysconfig/docker-storage: No such file or directory라고 하네요..
-
해결됨[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Android Studio에 Syntax가 갑자기 표시가 안됩니다.
안녕하세요 선생님, syntax error 관련해서 질문 드립니다. 보통 파일 생성할 때 .dart를 안붙이면 이후에 .dart를 붙이더라도 syntax가 표시안되곤 했는데요. 이번엔 잘 표시되던 syntax가 갑자기 안보이기 시작했고 해당 파일 이외의 파일에선 syntax가 잘 표시 됩니다.. 혹시 해결 방법이 있을까요? 일단 이런게 한 두번도 아니고 그래서 Visual Code로 옮기긴 했는데 환경이 너무 쾌적합니다. 가볍고 Extension들도 너무 유용하구요. 혹시 강사님께서 Android Studio를 선택하신 결정적인 VSCode의 단점같은게 있을까요???
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
강의 영상 소리 문제
강의 영상 이름 : 인터넷 설정 자동화를 위한 DHCP1분 36초부터 소리가 급격히 작아지는 것 같습니다!
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
riverpod watch 사용
flutter 화면 layout 을 만들때 코드가 길어져 Screen 의 위젯들을 분리하여 만들고 build 에서 합체시킵니다. riverpod provider 에서 상태값을 가져와 위젯에 출력해주고자 하는데 궁금한 점은 각 분리된 위젯들에서 상태값을 독립적으로 watch 해서 적용하는 것과, build 에서 통합적으로 watch 하다가 필요한 값들을 각 위젯으로 넘겨주는 것 중 어떤것이 성능상 이로운지아니면 별 차이가 없는지 궁금합니다. (각 위젯마다 여기저기서 watch 를 하고 있으면 더 성능이 떨어질 것 같기도 하고, build 에다 넣어 놓으면 화면 재 빌드 될 때 영향을 받을 것 같기도 하고 괜한 걱정인가요?^^;; ) @override Widget build(BuildContext context) { var state = ref.watch(userAccountProvider); return Column( children: [ _loginA(state.userName), _loginB(state.userId), ], ); } or Widget _loginA() { var state = ref.watch(userAccountProvider); return Text(state.userName); } Widget _loginB() { var state = ref.watch(userAccountProvider); return Text(state.userId); }
-
미해결스프링 핵심 원리 - 기본편
만약 스프링으로 전환하지 않는다면....
[질문 내용]안녕하세요 항상 강의 잘 듣고있습니다! 제가 복습을 하던 중 궁금한게 생겼는데 제가 이해한 것이 맞는 지 확인하고 싶어요!질문 1. MemberServiceImpl의 경우 AppConfig를 사용했을 때 위와 같은 구조를 갖게 되는데 만약에 이때 스프링으로 전환하지 않고 사용한다고 가정한다면, 클라이언트의 요청이 100번 들어오면 마찬가지로 AppConfig객체도 100번 생성해야 하는 문제점이 발생하게 되는 것이 맞나요? 질문 2.만약에 스프링 컨테이너를 사용하게 된다면 스프링 컨테이너에 AppConfig를 등록하고 필요할 때 마다 쓰게 되니까 싱글톤으로 공유해서 사용하게 되는 것이 맞나요??
-
미해결2. 웹개발 코스 [JAVA 개발언어]
설치 후 Installed JREs에서 java가 아니라 jdk로 나오면 잘못 설치한건가요?
설치 후 Installed JREs에서 java가 아니라 jdk로 나오면 잘못 설치한건가요?
-
해결됨[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
jquery, axios, ajax
선생님 안녕하세요혹시 jquery, axios, ajax 를 기초부터 심화까지 가르쳐주시는 강좌를 나중에 개설하실 의향이 있으신지 문의드리고 싶습니다
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션 6-4. 합이 같은 부분집합(DFS) 질문드립니다
DFS 함수 안에서 if L ==n:으로 하셨는데 왜 n으로 하신지 모르겠습니다! 0부터 시작해서 if L == (n-1): 로 해야 하지 않나요?if L == (n-1): <- 이렇게 하니 답도 다 맞는 거 같은데 n으로 하신 이유가 있을 것 같아서 질문드렸습니다!
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
static 관련
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; public abstract class UI_Base : MonoBehaviour { protected Dictionary<Type, UnityEngine.Object[]> _objects = new Dictionary<Type, UnityEngine.Object[]>(); public abstract void Init(); protected void Bind<T>(Type type) where T : UnityEngine.Object { string[] names = Enum.GetNames(type); UnityEngine.Object[] objects = new UnityEngine.Object[names.Length]; // 최상위 타입으로 모두 받아준다. _objects.Add(typeof(T), objects); for (int i = 0; i < names.Length; i++) { if (typeof(T) == typeof(GameObject)) { objects[i] = Util.FindChild(gameObject, names[i], true); } else objects[i] = Util.FindChild<T>(gameObject, names[i], true); if (objects[i] == null) Debug.Log($"Failed to bind({names[i]})"); } } protected T Get<T>(int idx) where T : UnityEngine.Object { UnityEngine.Object[] objects = null; if (_objects.TryGetValue(typeof(T), out objects) == false) return null; return objects[idx] as T; } protected GameObject GetObject(int idx) { return Get<GameObject>(idx); } protected Text GetText(int idx) { return Get<Text>(idx); } protected Button GetButton(int idx) { return Get<Button>(idx); } protected Image GetImage(int idx) { return Get<Image>(idx); } public static void BindEvent(GameObject go, Action<PointerEventData> action, Define.UIEvent type = Define.UIEvent.Click) { UI_EventHandler evt = Util.GetOrAddComponent<UI_EventHandler>(go); switch (type) { case Define.UIEvent.Click: evt.OnClickHandler -= action; evt.OnClickHandler += action; break; case Define.UIEvent.Drag: evt.OnDragHandler -= action; evt.OnDragHandler += action; break; } } } UIBase 코드에서 Bind랑 다르게public static void BindEvent는 static으로 선언하신 이유가 뭔가요 ?나중에 작성 할 Extension 클래스가 static 이라서 인가요 ?그리고 저는 클래스에서 사용하는 static을전역함수인데 클래스로 범위를 한번 묶어주는 정도로 생각하는데 맞나요 ?유니티는 클래스를 만들어도 따로 new를 써서 객체를 만드는게 아니니깐왜 static을 쓰고 어떤건 인스턴스 함수로 놔도 되는지 헷갈립니다 ㅠㅠ