본문 바로가기

전체 글

(86)
ORM Object Relational Mapping (객체-관계-매핑)어플리케이션 객체와 관계형 데이터베이스의 데이터를 매핑해주는 도구객체 지향 프로그래밍 - 클래스 사용 / 관계형 데이터베이스 - 테이블 사용대표적인 ORM : Hibernate, JPA 등 ORM 사용 이유객체 모델과 관계형 모델 간의 불일치 존재객체 지향 프로그래밍의 클래스 / 관계형 데이터베이스의 테이블데이터베이스 접근을 프로그래밍 언어의 관점에서 접근!ORM을 이용해서 객체 간의 관계를 바탕으로 SQL을 자동 생성하여 불일치 해결 ORM의 장점직관적인 코드로 데이터를 조작할 수 있음개발자가 비즈니스 로직에 집중할 수 있음부수적인 코드가 줄어들어 단순해지고 가독성 상승재사용 및 유지보수 편리ORM은 독립적으로 작성되어 있기 때문에 객체들..
JdbcTemplate JDBC API를 사용했을 때 불편한 부분반복되는 코드연결부터 자원의 반납까지 모든 부분의 관리 필요예외처리로 인해서 코드 복잡도 상승 JdbcTemplateSpring에서 개발자가 JDBC를 쉽게 사용할 수 있도록 도와주는 클래스JDBC 코어 패키지의 중앙 클래스JDBC와 같은 라이브러리로 사용 가능implementation 'org.springframework.boot:spring-boot-starter-jdbc' JdbcTemplate을 사용하면 해결되는 부분구조적인 반복 해결손쉬운 Transaction 처리쉽게 자바 객체로 매핑 가능 구조적인 반복 해결JDBC API를 사용할 때 요청 시 다음 과정이 진행됨try-catch 문 생성Connection 획득 / 종료Statement 준비 / 실행 /..
JDBC 서버와 DB의 연결 DB 교체가 발생한다면?데이터베이스마다 커넥션 연결 방법과 SQL 전달 방법, 결과 응답을 받는 방법이 모두 다름이러한 방식은 데이터베이스 변경에 매우 취약하다는 문제가 있음이러한 방식을 해결할 수 있는 것 ≫ 자바 표준 JDBC JDBCJava Database Connectivity자바에서 DB 프로그래밍을 하기 위해 사용되는 API (표준 인터페이스)데이터베이스에 맞는 JDBC 드라이버를 사용 JDBC 표준 인터페이스3가지 기능을 표준 인터페이스로 정의하여 제공인터페이스를 구현하여 제공하는 라이브러리 = JDBC Driver(Oracle DB에 접근할 수 있는 라이브러리 = Oracle JDBC Driver)  ** JDBC 이용하기!환경 설정build.gradle 파일에 JDBC..
Entity / DTO / DAO / Repository Entity실제 데이터베이스 테이블과 매핑시키는 클래스하나의 Entity를 하나의 테이블로 작성 (1:1)클래스의 필드는 테이블 내부의 컬럼(Column)을 의미@Entity 어노테이션을 사용하여 데이터베이스와 매칭될 클래스임을 나타냄 DTO (Data Transfer Object)데이터 전송 객체뷰에서 컨트롤러로 넘어오는 데이터를 담거나 컨트롤러와 서비스 사이에 주고 받는 데이터를 담는 데 사용 DAO (Data Access Object)데이터베이스에 접근하기 위한 객체서비스와 데이터베이스를 연결하기 위한 중간 다리 역할 Repository데이터베이스에 접근하는 메소드를 사용하기 위한 인터페이스서비스와 데이터베이스를 연결하기 위한 중간 다리 역할데이터베이스에 적용하고자 하는 CRUD를 정의하는 영역DA..
PUT, DELETE API PUT API자원이 존재하면 갱신하고, 없을 경우 새로 생성하기 위해 사용되는 API업데이트에 사용되는 메소드기본적인 동작 방식은 POST API와 유사함 @PutMapping@RequestBody를 통해 값을 받아 동작 DELETE API자원을 삭제하기 위해 사용되는 APIGET API와 유사하게 @PathVariable을 통해 ID 등을 받아 처리 @DeleteMappingGET API와 유사하게 @PathVariable을 통해 ID 등을 받아 처리
POST API POST API자원을 추가하기 위해 사용되는 API값을 URL이 아닌 HTTP Body에 추가하여 서버에 요청 @PostMappingPost API를 호출하는 경우 사용@RequestMapping(method=RequestMethod.POST) @RequestBodyBody에 담겨있는 값을 받기 위해서 사용하는 어노테이션 DTOBody의 key=value가 정해져 있지만 파라미터가 많은 경우 DTO 객체를 사용
GET API GET API자원을 조회하기 위해 사용되는 API @RequestMappingvalue와 method로 정의하여 api를 개발하는 방식value는 URI, method는 HTTP Method를 지정예) localhost:8080/hello @GetMappingGET API를 호출하는 경우 사용'value=' 생략 가능 @PathVariableGET 요청은 파라미터를 전달하기 위해 URL에 값을 담아 요청URL에서 담긴 값과 변수를 매핑하기 위해서 사용예) localhost:8080/hello/daeng@GetMapping value 표현 내 {value}와 @PathVariable 변수 이름이 일치하는 경우 value값 지정 생략 가능 @RequestParamGET 요청에서 쿼리 문자열을 전달하기 위해 ..
타임리프(Thymeleaf) 타임리프(Thymeleaf)자바 템플릿 엔진으로 스프링 부트에서 권장하는 서버 사이드 템플릿 엔진  특징서버 사이드 템플릿 엔진네츄럴 템플릿 : 순수한 HTML을 최대한 유지, HTML 확장자 사용, 웹 브라우저에서 파일 오픈 가능스프링 통합 지원 : 스프링과 자연스럽게 통합되어 다양한 기능 쉽게 사용 가능 타임리프 사용법문서 최상단에 다음 코드를 넣어서 사용 가능  예제