Controller 단에서 @Controller @RequiredArgsConstructor public class ItemController { @GetMapping(value = "/admin/item/new") public String itemForm() { return "/item/itemForm"; } 리턴타입이 String이고, 문자열 리턴이 있으면, 이건 view로 인식한다. templates 가 기본 탐색 경로인데, templates에서 /item 폴더 안에 있는 itemForm을 의미한다. 반환이라기보다는 "파일경로"라고 생각하는 게 더 옳은 판단. 만약 문자열 자체를 반환하고 싶다면? view 이름이 아닌... 그럴 때 메서드 위에 @ResponseBody를 붙인다. -> view이름으..

시큐리티 public class CustomAuthenticationEntryPoint implements AuthenticationEntryPoint { @Override public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException { response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized"); // 인증에 대한 접근 권한을 판단. // 이제 이걸 쓸 거다. } } - 웹에서 들어온 요청을 가지고 인증 또는 인가에 관련된..
DDL Auto 옵션 (총 5가지) none: 사용하지 않음 create: 기존 테이블 삭제 후 테이블 생성 create-drop: 기존 테이블삭제 후 테이블 생성. 종료 시점에 테이블 삭제 update: 변경된 스키마 적용 validate; 엔티티와 테이블 정상 매핑 확인 - update 옵션에서 컬럼 삭제는 엄청난 문제를 발생시킬 수 있기 때문에 컬럼 추가만 반영된다. - 개발 초기에는 create 또는 update 옵션을 이용해시 익숙해지는 데 집중하고 추후에 validate 옵션을 설정 해 주는 것이 좋다. - 스테이징, 운영환경에서는 절대로 create, create-drop. update를 사용하면 안 된다. - 스테이징과 운영 서버에서는 테이블 생성 및 컬럼 추가, 삭제, 변경은 데이터베이스..

JPA(Java Persistence API) : 자바 ORM 기술에 대한 API 표준 ORM(Object Relational Mapping) : 객체와 관계데이터베이스를 매핑 CRUD – INSERT, UPDATE, SELECT, DELETE 그리고, 데이터베이스는 관계형 데이터베이스를 사용한다. 그런데 자바는? 객체지향 언어이므로 객체와 관계형 데이터베이스 간에 필연적으로 불일치가 발생하고, 이것은 큰 문제가 된다. => 따라서 객체지향과 관계형 데이터베이스 간의 패러다임이 불일치 하기 때문에, ORM이 등장. # JPA는 인터페이스 # 대표적인 구현체 Hibernate, EclipseLink, DataNucleus, OpenJpa, TopLink 등 보통 Hibernate 로 개발. JPA의 장점 ..

스프링 MVC 패턴 Node.js와의 비교 Maven 프로젝트 구조 설정 파일(application.properties) 잠깐! 어노테이션이란? 메타데이터라고 불린다. JDK5부터 등장한 개념 클래스나 메소드, 변수 등을 선언할 때 ‘@’를 붙여서 사용한다. 어노테이션은 컴파일러에게 정보를 알려주거나, 실행할 때 별도의 처리가 필요할 때 매우 다양한 용도로 사용한다. Hello World 출력하기 @RestController // @Contrller + @ResponseBody @SpringBootApplication // 스프링 부트 어플리케이션 public class SpringDemoApplication { public static void main(String[] args) { SpringAppl..