- URL, URI
- URI는 URL을 포함하고 있다.
- URI는 유니크 하다.
- Web API 디자인 가이드
- URI는 정보의 자원을 표현해야 한다.
- 자원에 대한 행위는 HTTP Method로 표현해야 한다.
- 단어는 단수보다는 복수로표현한다.
- URI 마지막 문자로 슬래시 구분자(/)를 포함하지 않는다.
- 하이픈(-)은 URI가독성을 높일때 사용
- 언더바(_)는 사용하지 않는다.
- URI경로는 소문자만 사용한다. RFC 3986(URI문법형식)은 URI스키마와 호스트를 제외하고는 대소 문자를 구별한다.
- 파일 확장자는 URI에 포함시키지 않는다. Accept Header를 사용한다.
- REST API에서 HATEOAS를 사용하지 않으면 Web API 부른다.
- 스타일 : 제약조건의 집합을 의미
- Spring Boot 2.0(JDk 1.8이상만 지원, Hibernate 5.0)
- 기본적으로 jsp는 지원하지 않는다.
- Tomcat을 설치할 필요가 없다.
- tomcat을 설치하고, Spring Boot애플리케이션을 배포할 수도 있다. 이때는 jsp가 사용가능하다.(추천하지않는다.)
- 실행가능한 jar파일이 만들어진다.(java -jar 파일명.jar) JVM만 있으면 구동된다.
- 어떤 라이브러리가 있으면 라이브러리에 대한 설정을 자동으로 해준다.
- H2 dbms에 대한 의존성을 추가하면, Spring boot는 in memory형태로 자동으로 Datasource를 설정한다.
- @SpringBootApplication 가 있으면 base package 이하로 component를 찾는다. 많을 설정을 자동으로 해주고 있다.
- Spring Boot는 application.properties 이나 application.yml 파일을 어플리케이션에서 자동으로 읽어서 매핑시켜준다.(Snake YAML 라이브러리를 내장)
- Spring Boot는 schema.sql, data.sql 파일이 있으면 자동으로 실행시켜준다.
- Spring Security가 의존성에 추가되어있으면, 자동으로 인증관련 설정이 된다.( 기본 사용자 id : user, Using generated security password: 콘솔에서 확인)
- Spring Data JPA의 JpaRepository는 인터페이스를 준비하기만 하면, 자동으로 클래스를 만들고 Bean을 생성한다.
- 프로젝트
- Spring Data JPA + QueryDSL
- Spring Security
- Gradle
- SPRING INITIALIZR(web, devtools, jpa, mysql, security, Thymeleaf(비동기))
- H2 Database
- ORM JPA
- ORM이란 객체와 관계형 데이터베이스를 매핑하는 것이다.
- JPA는 표준 명세이다.
- 하이버네이트가 먼저 나왔다. 내부적으로는 Hibernate를 구현하고 있다.
- (객체) - (Table 컬럼 <-> DMBS) 의 관계를 연결해 주는것
- 영속성을 가진다.
- 내부적으로 sql을 만든다.
- JDBC API를 활용한다
- DMBS에 에 맞춰서 구동된다.
- JPQL은 SQL과 유사하지만 객체지향 언어이다.
- JPQL의 오타문제를 해결하기위해 QueryDSL가 나왔다.
- QueryDSL
- 정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해 주는 프레임워크
- 타입에 안전한 방식으로 HQL 쿼리를 실행하기 위한 목적으로 만들어졌다.
- Fluent API를 이용하여 쿼리를 생성할 수 있다.
- IDE의 코드 자동 완성 기능 사용
- 문법적으로 잘못된 쿼리를 허용하지 않음
- 도메인 타입과 프로퍼티를 안전하게 참조할 수 있음
- 도메인 타입의 리팩토링을 더 잘 할 수 있음
- Maven과 gradle에 QueryDSL 설정이 있으면 Book 엔티티가 있으면 컴파일할때 QBOOK 파일을 만들어 준다. QBOOK클래스 파일을 이용해서 QueryDSL을 사용한다.
- SQL입력할때 오타문제를 해결하기 위해 JOOQ가 나왔다.
- 사용하는 이유.
- 패러다임 불일치 해결
- SQL 중심적인 개발에서 객체 중심으로 개발
- 생산성
- 유지보수
- 성능
- 데이터 접근 추상호와 벤더 독립성
- 표준
- JPA 실습
- 클래스는 Serializable를 구현해야 한다.
- 다음과 같은 애노테이션이 설정되어 있어야 한다.
- javax.persistence.Entity 애노테이션
- javax.persistence.Table 애노테이션
- 엔티티와 연관을 맺는 테이블 정보를 설정한다.
- javax.persistence.Id
- table이 라면 primary key로 생각하면 된다.
- javax.persistence.GenerationType
- 자동으로 id를 생성하겠다.
- DBMS마다 id를 생성하는 방법이 다르다.(DMBS따라서 자동으로 지원)
- ex) Oracle : sequence객체를 사용
- javax.persistence.GeneratedValue
- jpa를 사용할 경우 자동으로 생성되는 id를 주는 것이 효율적
- JpaRepository 인터페이스가 제일 중요하다
- JpaRepository를 상속
- Gradle
- gradle clean
- gradle build
- gradle build -x test
- build는 수행하는데 test 빼고
- gradle compileQuerydsl
- target / java소스폴더 / QUser 클래스 생성
- Spring boot 테이블 관련 설정
- 스프링 부트 애플리케이션이 테이블을 자동으로 생성 삭제 한다.
- chema.sql에는 테이블 삭제, 생성관련된 sql을 넣는다.
- data.sql도 애플리케이션이 실행될때마다 자동으로 실행한다.sample data를 넣는다.
- properties로 설정하면 spring.java.hibernate.ddl-auto=create-drop과 같다.
- ddl-auto : 테이블 생성 및 삭제여부
spring:
jpa:
hibernate:
ddl-auto: create-drop
- @RestController
- spring 4.0 이전에는 다음의 애노테이션을 붙였다.
@Controller, @ResponseBody - 그냥 @Controller가 붙은 클래스의 메소드가 리턴하는 것은 view 이름이었다. @Controller, @ResponseBody가 붙어있을 경우에는 리턴하는 값이 출력값이다.
- 객체를 브라우저에게 알맞게 출력하기 위해서 사용하는 것이 MessageConverter다. 빈으로 여러개가 등록되어있다. Spring boot에서는 기본으로 설정되어 있다. 하지만 맘에안들때가 있으면 사용자가 바꿔야 한다.
- vaadin 공부해보기
0 개의 댓글:
댓글 쓰기