'뼈대나 근간'을 이루는 코드들의 묶음프로그램의 기본 흐름이나 구조를 정하고, 이 구조에 자신의 코드를 추가하는 방식으로 개발할 수 있도록 하는 프로그래밍의 기본 틀을 의미개발에 필요한 구조가 제공되고, 여기에 필요한 부분을 조립하는 형태로 개발이 진행된다.소형차를
링크 클릭압축 풀기경로 안에 있는 .exe 파일 실행설치 완료https://start.spring.io/project : 사용할 빌드 툴 선택 (Maven/Gradle) \- Maven, Gradle은 프로젝트에 필요한 의존성을 관리하는 빌드 라이프사이클을
이클립스 상단 Help -> Install New Softwarehttp://www.thymeleaf.org/eclipse-plugin-update-site/ 복사 붙여넣기 후 엔터!하단 selectAll 클릭 -> next -> 설치팝업이 뜬다면 Instal
파라미터로 넘어온 값 받기helloController.java파라미터로 "name"에 SpringMVC 값을 전달@RequestParam(name값) String 값을 담을 변수hello-template.htmlhttp://localhost:9090/hello
객체간의 의존성이 존재할 경우 개발자가 직접 객체를 생성하거나 제어하는 것이 아니라, 제어 반전에 의하여 특정 객체에 필요한 다른 객체를 프레임워크가 자동으로 연결시켜주는 것을 말한다.개발자는 자신에게 필요한 객체를 직접 할당하지 않고, 인터페이스를 통해 선언한 객체에
build.gradle 클릭dependencies에 링크 추가implementation 'org.springframework.boot:spring-boot-starter-jdbc'implementation group: 'com.oracle.database.jdbc',
JPA는 기존의 반복 코드는 물론이고, 기본적인 SQL도 JPA가 직접 만들어서 실행해준다.JPA를 사용하면, SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환할 수 있다.JPA를 사용하면 개발 생산성을 크게 높일 수 있다.JPA(Java Persis
파라미터로 요청보내기http://localhost:9090/request-param-v1?username=test&age=20리턴타입 없이 void라면 view단 조회를 하지 않겠다는 의미이다. view 조회를 무시하고, Http message body에 직접
왼쪽 build.gradle 클릭 -> dependincies 부분에 추가하기implementation 'org.projectlombok:lombok'서버 끈 상태에서, build.gradle 우클릭 -> Gradle-> Refresh Gradle Project 클릭하
Controller 처리 결과 후 응답할 view와 view에 전달할 값을 저장hello.htmltemplates.response, hello.html로 뷰 이동"data" key 값에 "hello" value 담아서 전달
컨트롤러 -> 타임리프를 사용하려면 빈 객체라도 넘어와야 한다.ex) th:field = "${item.itemName}" \-> id = "itemName" name="itemName" value="" 을 같이 만들어 준다. th:field가 id, name속
데이터 중에는 요일(월,화,수,목,금,토,일) , 계절(봄,여름,가을,겨울) 등과 같이 몇 가지 한정된 값을 갖는 경우가 있다. 열거 타입에 들어가는 값(월,화,,)들을 열거 상수라고 한다.자바 class 대신 enum 을 적어준다.열거 상수를 적을때는 첫 글자를 대문
🎈checkbox에 타임리프를 사용하지 않았을 경우, 체크박스 선택 값 확인하기 체크박스 체크여부 1\. open=on&\_open=on -> 체크박스 선택 했을 경우 \-> open에 값이 있는 것을 확인하고, 사용 \-> true 결과값을 출력 \-
라디오 버튼은 반드시 하나는 선택되어야 하기 때문에, hidden값이 없다.enum\-> name() -> 열거 객체의 문자열을 리턴
컨트롤러addForm.html👌 item.html업로드중..
값이 담기는 객체(Item)에 값이 잘 담기지 않고 이슈 발생 시,BindingResult 객체에 값이 담긴다.스프링이 제공하는 검증 오류를 보관하는 객체, 검증 오류가 발생하면 여기에 보관주의) BindingResult는 검증할 대상 객체 바로 다음에 와야한다. 순
키값이 혼동되거나 , 까먹었을 때 파일을 뒤져가며 찾기보다, 클래스로 접근하는 것이 편하다.LoginController.javarequest.getSession(true) - 세션이 있으면 기존 세션을 반환한다.세션이 없으면 새로운 세션을 생성해서 반환한다.reques
로그인한 사용자만 볼 수 있는 페이지들의 접근을 막을 필요가 있다.여러 기능에서 로그인 여부를 체크해야한다면 공통 로직이 필요하다.HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러\-> 필터는 서블릿으로 넘길 수도 있고, 넘기지 않고 홀드 할 수도 있고
스프링 인터셉터도 서블릿 필터와 같이 웹과 관련된 공통 관심 사항을 효과적으로 해결할 수 있는 기술이다. 서블릿 필터가 서블릿이 제공하는 기술이라면, 스프링 인터셉터는 스프링 MVC 가 제공하는 기술이다.둘다 웹과 관련된 공통 관심 사항을 처리하지만, 적용되는 순
Item.java스프링부트에서는 엔티티(테이블)들을 domain 패키지에 생성한다.@Entity - JPA에서 관리한다. 테이블 생성 / 테이블 == 엔티티@GeneratedValue - 제약조건을 걸지 않으면, PK 값을 각 DBMS에 맞는 자동증가 컬럼으로 만들어준
내장 타입새로운 값 타입을 직접 정의할 수 있음JPA는 임베디드 타입(embedded type)이라고 함주로 기본값 타입을 모아 만들어서 복합값 타입이라고도 함int, String 과 같은 값 타입Member 클래스에서 startDate, endDate 가 동일한 성격
JPA 는 다양한 쿼리 방법을 지원JPQL - 권장, 실무사용, 거의 모든 문제 해결 가능JPA Criteria - 자바코드를 짜서 JPA를 빌드해주는 generator 모음 -> 유지보수에 취약QueryDSL -> JPQL 보완, 권장, 실무사용, 쿼리 허용범위 가장
JPQL에서는 출력하고자 하는 컬럼을 프로젝션이라고 한다.select 절에 조회할 대상을 지정하는 것select m from Member m \-> Member 엔티티 조회select m.team from Member m \-> Member와 관련된 team을 가지
setFirstResult(int startPoint) : 조회 시작 위치(0부터 시작)setMaxResults(int maxResult) : 조회 할 데이터 수몇 번째부터 몇 개를 가지고 올 것인지 설정10번부터 20개 가져오기innerjoin -> inner는 생략
스프링 Data 설정(https://docs.spring.io/spring-boot/docs/2.7.6/reference/html/data.htmlproperties 파일을 Yaml 형식으로 설정할 수 있다.properties 파일 명 -> yml로 바꾸기파일
build.gradle 파일에서 라이브러리 추가하기 implementation 'org.springframework.boot:spring-boot-starter-validation'validation check 대상이 dto객체에 @NotEmpty 어노테이션 추가val
🎈 준영속(detached) 상태 영속성 컨텍스트에 저장되었다가 분리된 상태로 현재는 영속상태가 아닌 상태이다. 영속성 컨텍스트가 제공하는 기능을 사용하지 못한다. 🎈준영속 엔티티를 수정하는 2가지 방법 변경 감지 기능 사용(권장) 병합(merge)사용(권장X)