게시글
질문&답변
2024.07.26
h2 콘솔 접근 불가
안녕하세요! 마이티님! 우선 의심되는 부분은 " local로 돌려도 화면상에 mysql연결이 된 거 같이 데이터는 그대로 입니다 ." 라는 부분입니다! H2가 동작해야지만 올바른 URL을 이용해 h2-console에 접근할 수 있는데요! jdbc:h2:mem:library 라고 입력해주신게 맞다면 올바른 URL을 잘 써주신 것 같고 h2-console로도 접속한게 맞으니 한 가지 의심되는 부분은 H2가 정말 동작하고 있는가 입니다. 다음과 같은 순서로 해결해보시면 좋을 것 같습니다! local profile에서 H2를 쓰고 있는지 MySQL을 쓰고 있는지 제대로 확인해본다. 제대로 확인하는 방법은 서버를 실행시킨 이후 화면이나 API를 통해 데이터를 넣어보고 MySQL에 데이터가 들어갔는지 확인해볼 수 있습니다. 만약 MySQL을 쓰고 있다면, local profile에서 왜 MySQL을 쓰고 있는지 확인이 필요합니다. 예를 들어 application.yml 설정에서 mysql 설정 부분을 무언가 놓쳤다면, 위에 있는 설정을 아래 있는 설정이 덮어쓸 수도 있습니다. 만약 MySQL을 쓰고 있다면, local profile에서 정상적으로 H2를 쓰도록 바꿀 경우, 위의 문제가 해결될 것으로 보입니다! 한 번 해보시고 또 안되는 부분 편하게 질문 올려주세요! ( application.yml 파일 전체를 첨부해주셔도 좋을 것 같습니다. 감사합니다! 🙏
- 0
- 2
- 26
질문&답변
2024.07.26
Job 질문이 있습니다
안녕하세요 갸나다로님! 🙂 질문 주셔서 감사합니다. 결론부터 말씀드리면, 작성해주신 코드는 job 객체를 변수에 담더라도 다음 코드로 넘어갔는데, delay를 만나서 launch 안의 코드가 실행된 것 입니다! delay(1_000L) 함수 호출을 제외하고 실행시켜보시면, job을 만들자마자 job.cancel() 이 호출되며 표준 출력 없이 프로그램이 종료될거에요! 🙂 또 궁금하신 점 있으시면 언제든 편하게 질문 남겨주세요~ 감사합니다! 🙏
- 1
- 1
- 29
질문&답변
2024.07.26
예외 날리는 이유에 대해서
안녕하세요, 마이티님! 🙂 좋은 질문 감사드립니다. 보다 자세한 비교를 위해서는 작성해주신 코드 스타일을 봐야 할 것 같아요! 다만 대략적으로 라도 예외를 날리는 이유를 설명드리면 다음과 같습니다. [1. 예외 상황] 일반적으로 우리가 프로그래밍을 할 때 작성하는 코드는 수많은 가정이 들어 있습니다. 가장 대표적으로 List 에서 원소를 가져오는 get() 메소드는 List 가 갖고 있는 범위 내의 원소에 접근한다는 가정 으로 이루어져 있죠. List nums = List.of(1, 2); nums.get(5); // 5번 인덱스를 가진 원소는 없기 때문에 예외 발생 때문에 그러한 가정 이 어긋나면 예외를 던지게 됩니다. 비슷하게 우리가 작성한 대출 로직 역시 DB에 존재하는 유저가 DB에 존재하는 책을 빌린다는 가정 이 들어 있어요. 따라서 이러한 가정에 어긋나면 예외를 던지는 것이 일반적인 처리라 할 수 있겠죠! [2. HTTP 상태 코드] 또 다른 이유도 있습니다. 바로 HTTP 상태 코드인데요, 우리가 만든 API가 정상적으로 동작하지 않았을 경우에는 200 OK를 반환 하는 것이 아니라 다른 상태 코드를 반환해야 해요! 강의에서는 단순히 예외를 던져 500 Server Internal Error를 던졌지만, 상황에 따라서는 @RestControllerAdvice 와 같은 기능을 활용해 404 Not Found를 던져 조금 더 명확한 에러 상황을 알려주기도 합니다. 혹시 작성하신 코드를 알려주시면, 조금 더 자세한 비교와 함께 답변 드릴 수 있도록 하겠습니다. 답변이 도움이 되었으면 좋겠습니다. 감사합니다! 🙏
- 1
- 1
- 27
질문&답변
2024.07.24
orElseThrow에 관해서
안녕하세요 마이티님! 🙂 정말 좋은 질문 감사드립니다. 결론부터 말씀드리면 상황에 따라 추가적인 예외 처리 가 필요한 것이 맞고, 실무에서는 대부분 경우 추가적인 예외 처리를 하는 편입니다. 이와 관련해서는 @RestControllerAdvice 를 찾아보시면 더 많은 정보를 얻으실 수 있습니다. 다만 " 예외 처리 "라는 것 자체가 요구사항에 의존적이라는 것은 말씀드리고 싶습니다! 😊 예를 들어 저희가 강의에서 구성한 간단한 도서관리 사이트는 에러가 발생했을 때 "서버에서 에러가 발생했습니다"와 같은 에러만 띄워주면 되었고 이런 요구사항을 처리하기 위해서는 서버에서는 데이터가 없는 예외적인 상황에 HTTP 응답 status를 200이 아닌 값으로 보내주고 클라이언트에서는 응답 status가 200이 아닌 값일 때 alert을 띄워주면 되기에 이 역시 " 예외 처리 "를 했다고 할 수 있습니다. 다만 만약 요구사항이 다르면 또 다른 예외처리가 적절하게 필요하죠. 예를 들어 로그인을 했을 때 아이디가 없는 것인지 비밀번호가 틀린 것인지 구분하고 싶다면 지금 방식으로는 둘을 구분할 수 없기에 다른 방식이 필요합니다. 답변이 도움이 되었으면 좋겠습니다. 감사합니다! 🙏
- 1
- 1
- 35
질문&답변
2024.07.19
시작도 하기 전에 계속 오류가 납니다.
안녕하세요 도형님! 에러가 나오고 있군요! 😭 보내주신 첫 번째 사진은 자바 8이 설치되어 있는 상황에서 자바 11 프로젝트를 실행해서 발생한 에러 같습니다! 그리고 자바 11을 설치하고도 다시 나온 에러가 아래 이미지인 것 같은데요! 보내주신 이미지에는 에러가 발생했다는 사실 뿐, 어떤 원인으로 어디서 에러가 발생했는지는 나와 있지 않습니다 😭 에러가 발생한 내용의 다른 탭을 보시면 다른 내용이 나와 있을 텐데, 그 내용을 확인해야 원인을 유추할 수 있고 그래야 해결할 수 있을 것 같습니다. 추가적인 정보 주시면 한 번 확인해보도록 하겠습니다. 감사합니다 🙏
- 0
- 1
- 71
질문&답변
2024.07.17
@PostMapping("/book")같은 걸 html에 연결하는 건 어떻게 하는 건가요
안녕하세요! yuntyu01님! 🙂 좋은 질문 주셔서 감사합니다. 아마 화면 (클라이언트) 에서 서버에 API를 어떻게 연결하는가? 를 질문 주신 것 같아요! 화면에서는 Javascript와 같은 언어를 이용해 서버의 API를 호출하도록 코딩되어 있는데요, 예를 들면 다음과 같은 느낌입니다. $.ajax({ method: "GET", url: "http://localhost:8080/book", success: (response) => { console.log("책 관련 응답 받음!") } }) 이런 영역은 프론트엔드 개발자 분이 개발을 담당하게 되죠! 더 궁금하시다면 ajax 라는 키워드를 이용해 검색해보실 수 있는데 아래와 같은 생활 코딩 영상을 보면서 간단히 따라해보셔도 도움이 될 거에요! https://opentutorials.org/course/3281 또 궁금한 점 있으시면 편하게 질문 주세요. 감사합니다! 🙏
- 1
- 1
- 59
질문&답변
2024.07.17
컴퓨터를 재시작 했더니 작동을 안 하네요
안녕하세요 yuntyu01님! 🙂 앗 서버 연결이 안되시는군요!! 😭 어떤 서버 연결이 안되시는걸까요? 또 현재 에러가 어떻게 나오고 있나요?? 현재로써는 제가 도움드리기 어려워 추가적인 정보를 주시면 확인 한 번 해보도록 하겠습니다. 감사합니다! 🙏
- 0
- 2
- 63
질문&답변
2024.07.15
테이블 생성
안녕하세요 도현님! 🙂 좋은 질문 감사합니다. 강의에서는 SQL을 먼저 작성하고 객체를 만드는 것이 더 쉬울 수 있기 때문에 SQL 작성 -> 엔티티 코드 작성 순서로 보여드렸습니다. 실제로는 엔티티 코드를 먼저 작성하고, 자동 생성된 SQL을 활용하기도 합니다. 👍 물론, 운영환경에서는 강의에서 설명드린 것처럼 자동 생성된 SQL을 DB에 실시간으로 반영하지 않습니다. 자동 생성된 SQL이 항상 완벽한 것은 아닐 뿐더러, 애플리케이션이 배포되는 시점 전후로 SQL이 미리 (혹은 나중에) 반영되어야 할 수 있기 때문입니다. 답변이 도움이 되었으면 좋겠습니다. 감사합니다! 🙏
- 1
- 1
- 38
질문&답변
2024.07.09
internal 이해가 안갑니다 ㅠ
안녕하세요 병곤님! 🙂 좋은 질문 주셔서 감사합니다! "모듈" 이라는 것을 조금 더 설명 드리면, 여러 클래스들을 모아 놓은 논리적인 집합 이라고 생각하시면 될 것 같아요! 예를 들어 A 모듈에는 Class1 , Class2 를 넣고 B 모듈에는 Class3 Class4 를 넣었다고 합시다. 이 때 Class1 을 internal로 만들면 "같은 모듈에서만" 접근 가능하게 되고, 따라서 Class2 에서는 Class1 에 접근할 수 있지만, Class3 과 Class4 에서는 접근할 수 없게 되죠. 관련한 내용으로는 gradle multi module 이라는 것을 찾아보시면 도움이 될 것 같은데요! https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-9%EB%B6%80%ED%84%B0-21%EA%B9%8C%EC%A7%80 강의의 무료 1강 에서 (사진) gradle 멀티 모듈을 연습해보고 있으니 "무료로" 참고해보셔도 좋을 것 같습니다. 답변이 도움이 되었으면 좋겠습니다. 감사합니다! 🙏
- 0
- 1
- 53
질문&답변
2024.07.09
mysql connector ? 오류 ㅠㅠ
안녕하세요 미니민님! 🙂 아이고 잘 해결되셔서 다행이네요! 🙏 진행하시다가 또 안되는 부분 있으시면 편하게 질문 올려주세요! 👍 감사합니다.
- 0
- 3
- 106