🍳

초보 개발자의 일상

개발 45

[MyBatis] <resultMap>, <id>, <result>, <collection>

생각관리자 페이지를 구현하는 수업에서 권한을 지정하는 내용을 듣다가 user와 role을 따로 테이블을 만든 다음 MyBatis에서 연결을하는데 resultMap이라는 요소를 사용하고 이 요소 안에 , , 을 사용하는 것을 보고 정리해두면 좋을 거 같아서 글로 남긴다. 예시// 예시 SELECT * FROM users WHERE id = #{id}  요소에서 resultMap 속성을 사용하는 이유 요소에서 resultMap 속성을 사용하는 이유는 SQL 쿼리 결과를 Java 객체에 매핑할 때 보다 명확하고 유연한 방식으로 복잡한 데이터 구조를 관리하기 위해서다.부모-자식 관계, 다대다 관계 등 복잡한 객체 구조를 쉽게 표현할..

개발/SpringBoot 2024.10.28

[MyBatis] useGeneratedKeys, keyProperty

생각관리자 페이지 구현을 하는 수업을 듣는 도중에 구문에서 useGeneratedKeys="true" keyProperty="id" 이라는 코드를 보았다. 왜 이것을 사용하는지 정리를 해놓으면 좋을 거 같아서 이렇게 글을 작성한다.useGeneratedKeys="true" keyProperty="id"MyBatis에서 데이터베이스의 자동 생성 키(auto-increment key)를 사용할 때 설정하는 속성 useGeneratedKeys="true"MyBatis가 SQL INSERT 작업 후에 데이터베이스에서 자동으로 생성된 기본 키 값을객체에 자동으로 매핑한다. 즉, 데이터베이스의 기본 키가 자동 생성되는 경우(AUTO_INCREMENT) , MyBatis가 그 값을 가져와서 지정한 객체의 속성에 할당..

개발/SpringBoot 2024.10.28

일반적으로 자주 사용되는 HTTP 응답 상태 코드

* HTTP 응답 상태 코드를 정리하다가 이 모든 상태 코드를 사용하기 보다는 일반적으로 자주 사용되는 상태 코드가 있지 않을가 싶어서 Chat gpt한테 물어보았다. * 아래 상태 코드들은 웹 개발이나 API 설계에서 매우 중요한 역할을 하며, 클라이언트와 서버 간의 통신 상태를 명확하게 전달하는 데 사용된다.  1xx (정보)100 Continue: 클라이언트의 요청이 수신되었고, 요청을 계속 진행해도 좋다는 의미다.101 Switching Protocols: 클라이언트가 요청한 프로토콜로 전환하였음을 나타낸다.2xx (성공)200 OK: 요청이 성공적으로 처리되었음을 나타내며, 서버가 요청한 리소스를 반환한다.201 Created: 요청이 성공적으로 처리되었고, 새로운 리소스가 생성되었음을 의미한다..

개발/기타 2024.10.27

CMD 창으로 설치한 Ubuntu 실행시키기

* Ubuntu 프로그램을 따로 실행 시키기 귀찮아서 CMD 프롬프트에서 Ubuntu 실행시키는 방법이 없는지 찾아보니 있었다. 아주아주 사랑스러운 Chat gpt 같으니라고.. ㅎㅎ   wsl 설치된 거 보기 wsl -l -v내가 설치한 Ubuntu 실행. 여기서 나는 Ubuntu-24.04 을 설치했었기 때문에 이를 실행wsl -d Ubuntu-24.04  ▼ CMD 프롬프트에서 실행시키는 모습

개발/명령어 2024.10.27

HTTP 응답 상태 코드 - 미완성

생각개발 공부를 하면서 코드 작성해서 서버 실행시키면 종종 발생하는 에러들이 많았다.303, 404, 500 같은 에러를 접했는데 404는 흔히 봤었던 not found 에러라서 잘 아는데 나머지는 생소하다보니 작업하다가 가 발생한 오류 코드를 찾아보고 '아~ 이런 에러구나.'라고 이해하고 넘어가다보니 나중에 같은 에러가 나도 다시 찾아보게 되는 일이 생겼다. 그래서 글로 정리해두면 나중에 찾기 편하지 않을까 싶은 생각에 글을 작성한다.  HTTP 상태 코드란HTTP 상태 코드는 웹 서버가 클라이언트의 요청을 처리한 결과를 나타내주는 코드이다.상태보드는 3자리의 숫자로 이루어져 있으며, 5개의 그룹으로 나누어져 있다.1xx : 정보를 제공하는 응답2xx : 성공적인 응답3xx : 리다이렉트 메세지4xx ..

개발/기타 2024.10.25

JAR 파일 실행 관련 명령어

* AWS에서 JAR 파일을 터미널 세션이 종료되어서 돌아가게 하고 싶어서 nohup이라는 키워드를 알게 되었다.그런데 프로세스 확인하는 방법을 외워야하는데 자주 사용하지 않다보니 까먹어서 기록을 하게 되었다.  실행 중인 Java 프로세스 확인ps aux | grep java  프로세스 종료kill   프로세스 강제 종료kill -9  일반적인 JAR 파일 실행java -jar .jar 콘솔창이 종료되어서 JAR 파일 실행되는 방법nohub java -jar .jar & nohub 실행시 출력과 오류를 특정 파일로 저장하고 싶은 경우nohup java -jar .jar > output.log 2>&1 & > : 표준 출력을 리다이렉트하는 데 사용. 프로그램의 정상적인 출력 결과를 다른 곳(파일)에 저장..

개발/명령어 2024.10.25

@Autowired

# 수익을 위해 작성한 글이 아닙니다.  생각@Autowired가 의존성 주입을 한다고 해서 좀 더 명확하게 이해하고 싶어서 찾아보았다.  @Autowired'Spring 컨테이너에 등록된 빈'을 찾아서 '해당 필드에 주입'하는 역할을 한다.  주입한다는 말이 생소할 수도 있다.JAVA에서 인스턴스를 생성과 비슷한 거 아니야? 라고 생각할 수 있지만 엄연히 다르다.@Autowired는 Spring 컨테이너에서 등록된 Bean을 찾아서 해당 필드, 생성자, 메서드에 주입하는 역할이다. 다시한번 더 설명하자면인스턴스 생성은 Spring IoC 컨테이너에서 하고, @Autowired가 이미 생성된 Bean을 가져와 주입하는 역할을 하는 것 뿐이다.

개발/SpringBoot 2024.10.23

Spring Bean (스프링 빈)

# 수익을 위해 작성한 글이 아닙니다.# 수업을 받고 내용을 정리하기 위해 작성한 글입니다. 생각@Autowired를 이해하려고 하다보니 의존성 주입이라는 단어가 보였다. 이미 등록된 빈을 찾아서 해당 필드에 주입해주는 역할을 한다고 해서 이때 빈이란 무엇인지 궁금해졌다.  Spring Bean의 정의Spirng Framework에 관리되는 객체이며, Java 클래스로 정의된다.IoC(제어의 역전) 컨테이너에 의해 생성, 초기화, 소멸되는 모든 객체를 포함한다.  Spring Bean 특징IoC(제어의 역전)Spring Bean은 Spring IoC 컨테이너에 의해 생성되고 관리되는 객체로, 개발자가 직접 인스턴스를 생성하지 않고 컨테이너가 이를 자동으로 처리한다.IoC(Inversion of Contr..

개발/SpringBoot 2024.10.23

@Controller, @RestController 차이

# 수익을 위해 작성한 글이 아닙니다.# 수업을 받고 내용을 정리하기 위해 작성한 글입니다.생각Spring Boot 수업을 들으며 소스코드에 @RestController가 있었다.이름만 봐도 Controller와 같은 기능을 가지고 있겠다고 생각을 했다.그리고나서 주말에 게시판 목록, 상세, 로그인 구현하는 것을 복습을 하다가 뷰템플릿을 구현하는데 에러가 나서 왜 에러가 나는건가 싶어서 찾아보다가 내가 @RestController 어노테이션을 적용시켜놓고 html 문서로 연결하려고 했었던 것이었다. 그래서 @Controller와 @RestController의 차이를 제대로 이해하고 사용해야겠다는 생각에 찾아보았다.  @ControllerMVC 패턴에서 클라이언트의 HTTP 요청을 받아 관련 비즈니스 로직..

개발/SpringBoot 2024.10.23

SpringBoot(스프링부트) 수업 2일차

# 수익을 위해 작성한 글이 아닙니다.# 수업을 받고 내용을 정리하기 위해 작성한 글입니다.# 수업 책: 점프 투 스프링부트# https://wikidocs.net/160023 # 2024-09-24 IP 관련 내용 https://inpa.tistory.com/entry/WEB-IP-%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%84%9C%EB%B8%8C%EB%84%B7-%EB%A7%88%EC%8A%A4%ED%81%AC-%EC%84%9C%EB%B8%8C%EB%84%B7%ED%8C%85-%EC%B4%9D%EC%A0%95%EB%A6%ACweb, devtools, thymeleaf 라이브러리 설치 1. web 라이브러리 설치 1) build.gradle 파일 클릭 2) 다음과 같은 소스 코드를 입력..

개발/SpringBoot 2024.09.24