LeeDiculous
article thumbnail
식별자 값 자동 생성
백엔드 ⏎/JPA 2023. 1. 4. 11:43

식별자 변수에는 사용자가 직접 값을 할당할 수도 있지만 일반적으로는 애플리케이션에서 자동으로 증가하도록 합니다. 식별자 값을 자동으로 생성하고 할당하는 데는 다양한 전략이 있는데, 이들에 대해서 알아보겠습니다. 식별자 변수에 자동으로 증가된 값을 할당할 때는 @Id가 적용된 식별자 변수 위에 @Id와 더불어 @GeneratedValue 어노테이션을 추가하면 됩니다. @GeneratedValue는 다음 두 가지 속성을 사용할 수 있습니다. generator : 생성된 키 생성기를 참조한다. strategy : 식별자 값 자동 생성 전략을 선택한다. PK(Primary Key) 전략 GenerationType.IDENTITY : auto_increment나 IDENTITY를 이용하여 PK 값을 생성합니다. ..

article thumbnail
HTTP 요청 - 기본, 헤더 조회
백엔드 ⏎/spring mvc 2023. 1. 3. 23:00

@Slf4j @RestController public class RequestHeaderController { @RequestMapping("/headers") public String headers(HttpServletRequest request, HttpServletResponse response, HttpMethod httpMethod, Locale locale, @RequestHeader MultiValueMap headerMap, @RequestHeader("host") String host, @CookieValue(value = "myCookie", required = false) String cookie ) { log.info("request={}", request); log.info("re..

article thumbnail
Path Variable(경로 변수)
백엔드 ⏎/spring mvc 2023. 1. 3. 22:55

@GetMapping("/mapping/{userId}") public String mappingPath(@PathVariable("userId") String data) { log.info("mappingPath userId={}", data); return "ok"; } 최근 HTTP API는 위와 같이 리소스 경로에 식별자를 넣는 스타일을 선호합니다. @RequestMapping은 URL 경로를 템플릿화 할 수 있는데, @Path Variable을 사용하면 매칭되는 부분을 편리하게 조회할 수 있습니다. @PathVariable의 이름과 파라미터 이름이 같으면 생략할 수 있습니다. Path Variable 다중 사용 @GetMapping("/mapping/users/{userId}/orders/{or..

article thumbnail
JPA 기본 설정
백엔드 ⏎/JPA 2023. 1. 1. 12:55

영속성(Persistence)이란? 시스템에 사용자가 입력한 데이터를 사용하기 위해서는 당연히 해당 데이터가 어딘가에 저장되어 있어야 한다. 메모리에 저장된 데이터는 시스템이 종료될 때 모두 사라지기 때문에 재사용할 수 없다. 내가 그동안 다뤄온 MAP처럼 하지만 파일이나 데이터베이스에 저장하면 시스템이 종료돼도 다시 사용할 수 있는 영속적인 데이터가 된다. 데이터 영속성은 이렇게 데이터가 메모리가 아닌 데이터베이스에 저장되어 지속되려는 성질을 의미한다. 엔티티 클래스 JPA에서 테이블과 매핑되는 자바 클래스를 엔티티 클래스라 하는데, JPA를 사용할 때 가장 먼저 해야 할 일이 엔티티 클래스를 작성하는 것이다. 일반적으로 엔티티 클래스 이름은 테이블 이름과 동일한 이름을 사용한다. 어노테이션 의미 @E..

article thumbnail
로깅
백엔드 ⏎/spring mvc 2022. 12. 29. 22:58

@Slf4j @RestController public class LogTestController { //private final Logger log = LoggerFactory.getLogger(getClass()); @GetMapping("/log-test") public String logTest() { String name = "Spring"; log.trace("trace log={}", name); log.debug("debug log={}", name); log.info("info log={}", name); log.warn("warn log={}", name); log.error("error log={}", name); return "ok"; } } 매핑 정보 @RestController @..

@RequestMapping
백엔드 ⏎/spring mvc 2022. 12. 29. 22:57

스프링은 애노테이션을 활용한 유연하고, 실용적인 컨트롤러를 만들었는데 바로 @RequestMapping 애노테이션을 사용하는 컨트롤러이다. 실무에서는 99.9% 이 방식의 컨트롤러를 사용한다. ​ 애노테이션 기반의 컨트롤러 사용 예제를 보자. @Controller //@Component //@RequestMapping public class SpringMemberFormControllerV1 { @RequestMapping("/springmvc/v1/members/new-form") public ModelAndView process() { return new ModelAndView("new-form"); } } @Controller 스프링이 자동으로 스프링 빈으로 등록한다.(내부에 @Component 애..

핸들러 매핑과 핸들러 어댑터, 뷰 리졸버
백엔드 ⏎/spring mvc 2022. 12. 29. 22:55

스프링 부트가 자동으로 등록하는 핸들러 매핑과 핸들러 어댑터, 뷰 리졸버 (일부 생략) ​ HandlerMapping RequestMappingHandlerMapping: 애노테이션 기반의 컨트롤러인 @RequestMapping에서 사용 BeanNameUrlHandlerMapping: 스프링 빈의 이름으로 핸들러를 찾는다. ​ HandlerAdapter RequestMappingHandlerAdapter: 애노테이션 기반의 컨트롤러인 @RequestMapping에서 사용 HttpRequestHandlerAdapter: HttpRequestHandler 처리 SimpleControllerHandlerAdapter: Controller 인터페이스(애노테이션X, 과거에 사용) 처리 ​ 뷰 리졸버 BeanNam..

article thumbnail
스프링 MVC 전체 구조
백엔드 ⏎/spring mvc 2022. 12. 29. 22:54

직접 만든 MVC 프레임워크 구조 ​ ​ SpringMVC 구조 ​ DispatcherServlet 부모 클래스에서 HttpServlet을 상속 받아서 사용하고, 서블릿으로 동작한다. DispatcherServlet → FrameworkServlet → HttpServletBean → HttpServlet 스프링 부트는 DispatcherServlet을 서블릿으로 자동으로 등록하면서 모든 경로(urlPatterns="/")에 대해서 매핑한다. ​ ​ 요청 흐름 서블릿이 호출되면 HttpServlet이 제공하는 service()가 호출된다. 스프링 MVC는 DispatcherServlet의 부모인 FrameworkServlet에서 service()를 오버라이드 해두었다. FrameworkServlet.se..

article thumbnail
서버사이드 렌더링, 클라이언트 사이드 렌더링
백엔드 ⏎/spring mvc 2022. 12. 29. 22:53

SSR - 서버 사이드 렌더링 HTML 최종 결과를 서버에서 만들어서 웹 브라우저에 전달 주로 정적인 화면에 사용 관련 기술: JSP, 타임리프 ​ CSR - 클라이언트 사이드 렌더링 HTML 결과를 자바스크립트를 사용해 웹 브라우저에서 동적으로 생성해서 적용 주로 동적인 화면에 사용, 웹 환경을 마치 앱 처럼 필요한 부분부분을 변경할 수 있음 예)구글 지도, Gmail 관련 기술: React, Vue.js ​ 참고 React, Vue.js를 CSR+SSR 동시에 지원하는 웹 프레임워크도 있음 SSR을 사용하더라도, 자바스크립트를 사용해서 화면 일부를 동적으로 변경 가능 ​ ​

article thumbnail
웹 서버와 WAS
백엔드 ⏎/spring mvc 2022. 12. 29. 21:59

웹 - HTTP 기반 HTTP 메시지에 모든 것을 전송한다. 거의 모든 형태의 데이터 전송 가능 서버 간에 데이터를 주고받을 때도 대부분 HTTP 사용 ​ ​ 웹 서버(Web Server) HTTP 기반으로 동작 정적 리소스 제공, 기타 부가기능 정적(파일) HTML, CSS, JS, 이미지, 영상 예) NGINX, APACHE ​ 디렉터리에 파일들(HTML, CSS, JS)을 넣어놓으면 서버들이 파일들을 서빙해준다. ​ ​ 웹 애플리케이션 서버(WAS - Web Application Server) HTTP 기반으로 동작 웹 서버 기능정적 리소스 제공 포함+ 프로그램 코드를 실행해서 애플리케이션 로직 수행 동적 HTML, HTTP API(JSON) 서블릿, JSP, 스프링 MVC 예) Tomcat Jet..

profile on loading

Loading...