728x90

Programming 281

Spring - Data JPA

- JPA를 이용할 때는 테이블과 SQL을 다루는 것이 아니라 데이터에 해당하는 개체를 엔티티 객체라는 것으로 다루고 JPA로 이를 데이터베이스와 연동해서 관리한다. - 엔티티 객체는 쉽게 말해서 PK(기본키)를 가지는 자바의 객체이다. 엔티티 객체는 고유의 식별을 위해 @Id를 이용해서 객체를 구분하고 관리한다. - Spring Data JPA는 자동으로 객체를 생성하고 이를 통해서 예외 처리 등을 자동으로 처리하는데 이를 위해서 제공되는 인터페이스가 JpaRepository이다. - 엔티티 클래스는 반드시 @Entity가 존재하고, 해당 엔티티 객체의 구분을 위한 @Id가 필요하다. @MappedSuperclass @EntityListeners(value = { AuditingEntityListene..

Programming/Spring 2023.06.07

JAVA - 열거형

- 열거형은 서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할 때 사용하면 유용하다. public class Card { static final int CLOVER = 0; static final int HEART = 1; static final int DIAMOND = 2; static final int SPADE = 3; static final int TWO = 0; static final int THREE = 1; static final int FOUR = 2; final int kind; final int num; } - 위와 같이 상수 하나마다 값을 넣어 지정해줘야 했다. enum Kind { CLOVER, HEART, DIAMOND, SPADE } // 열거형 Kind를 정..

Programming/JAVA 2023.06.07

JAVA - Optional

- Optional을 알기 전 NullPointerException을 알아야 한다. - NullPointerException이란? 1. null 값이 반환되면 발생하는 예외이다. - Optional이란? 1. JAVA8에서는 Optional 클래스를 사용해 NPE를 방지할 수 있도록 도와준다. 2. Optional는 null이 올 수 있는 값을 감싸는 Wrapper클래스로, 참조하더라도 NPE가 발생하지 않도록 도와준다. public final class Optional { // If non-null, the value; if null, indicates no value is present private final T value; ... } 3. Optional 클래스는 위와 같이 value에 값을 저장..

Programming/JAVA 2023.06.05

Spring - MVC 기본 동작 원리

1. 컨트롤러에서 리턴 값으로 문자를 반환하면 viewResolver가 화면을 찾아서 처리한다 2. 스프링 부트 템플릿엔진 기본 viewName 매핑 3. resources:templates/ + (viewName) + .html 1. 웹 브라우저에 요청이 들어오면 톰켓은 스프링 컨테이너에 해당 컨트롤러를 우선 찾아보고 없으면 resources에 있는 정적 파일을 찾아서 요청에 대한 응답을 보낸다. - Controller @Controller public class HelloController { @GetMapping("hello-mvc") public String helloMvc(@RequestParam("name") String name, Model model) { model.addAttribute(..

Programming/Spring 2023.06.05

Spring - @RequestParam, @ModelAtttribute, WebDataBinder

1. 사용법과 예제 우선 각각의 어노테이션의 사용법과 예제를 다루어보고, 각각을 언제 사용하면 좋을지에 대해 알아보도록 하겠습니다. @RequestParam @RequestParam 어노테이션은 사용자가 요청시 전달하는 값을 Handler(Controller)의 매개변수로 1:1 맵핑할때 사용되는 어노테이션입니다. @Controller public class TestController { @GetMapping("/") public String getTestPage(@RequestParam("name") String name) { System.out.println("이름 : " + name); return "test"; } } 예를 들어 사용자가 /?name=test 로 요청한다면, 위 핸들러의 매개변수인..

Programming/Spring 2023.06.02

JAVA - Reflection API

- Reflection API 1. 구체적인 클래스 타입을 알지 못해도 그 클래스의 정보(메서드, 타입, 변수 등등)에 접근할 수 있게 해주는 자바 API다. - Car 클래스 구현 public class Car { private final String name; private int position; public Car(String name, int position) { this.name = name; this.position = position; } public void move() { this.position++; } public int getPosition() { return position; } } - 다형성을 통한 객체 생성 public static void main(String[] args)..

Programming/JAVA 2023.06.01

Spring - 스프링 MVC 구현하기(Mapper, @Valid, 등...)

- 등록 작업의 경우 1. TodoMapper -> TodoService -> TodoController -> JSP의 순서로 처리하도록 한다. - ModelMapper는 DTO를 VO로 변환하거나 VO를 DTO로 변환해야 하는 작업에 사용된다. - @Configuration은 해당 클래스가 스프링 빈(Bean)에 대한 설정을 하는 클래스임을 명시한다. - @Bean은 해당 메소드의 실행 결과로 반환된 객체를 스프링의 빈(Bean)으로 등록시키는 역할을 한다. package org.zerock.springex.config; import org.modelmapper.ModelMapper; import org.modelmapper.convention.MatchingStrategies; import org.s..

Programming/Spring 2023.05.30

Spring - bean, root-context, servlet-context,

- Spring IoC 컨테이너가 관리하는 자바 객체를 빈(Bean)이라고 부른다. - 일반적으로 자바 프로그램에서는 1. 각 객체들이 프로그램의 흐름을 결정하고 각 객체를 직접 생성하고 조작하는 작업(객체를 직접 생성하여 메소드 호출)을 했다. 즉, 모든 작업을 사용자가 제어하는 구조였다. ex) A 객체에서 B 객체에 있는 메소드를 사용하고 싶으면, B 객체를 직접 A 객체 내에서 생성하고 메소드를 호출했다. - 하지만 IoC가 적용된 경우, 객체의 생성을 특별한 관리 위임 주체에게 맡긴다. 이 경우 사용자는 객체를 직접 생성하지 않고, 객체의 생명주기를 컨트롤러하는 주체는 다른 주체가 된다. 즉, 사용자의 제어권을 다른 주체에게 넘기는 것을 IoC(제어의 역전)라고 한다. - 우리가 알던 기존의 자..

Programming/Spring 2023.05.29
728x90