![DTO 만들기 - DB 연결하기](https://image.inblog.dev?url=https%3A%2F%2Finblog.ai%2Fapi%2Fog%3Ftitle%3DDTO%2520%25EB%25A7%258C%25EB%2593%25A4%25EA%25B8%25B0%2520-%2520DB%2520%25EC%2597%25B0%25EA%25B2%25B0%25ED%2595%2598%25EA%25B8%25B0%26logoUrl%3Dhttps%253A%252F%252Finblog.ai%252Finblog_logo.png%26blogTitle%3Dvosw1&w=2048&q=75)
![notion image](https://image.inblog.dev?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F8a47dc81-2a0f-4b7c-854a-6cd86ec3b678%252Ff9e72f8c-4840-40f0-b06c-6d1c763e9473%252FUntitled.png%3Ftable%3Dblock%26id%3Db76347aa-0285-4ae4-a7f3-72af333eb496%26cache%3Dv2&w=2048&q=75)
- H2 DB
: 자바로 작성된 관계형 데이터베이스 관리 시스템 / 서버 실행시 자동 설치
자바 애플리케이션에 임베드(장착)하거나 클라이언트-서버 모드에서 구동할 수 있음
인메모리 데이터 베이스 : 킬 때마다 똑같은 상태로 셋팅 가능
DB는 종료되면 데이터가 다 날아감 / 휘발성
메모리에 데이터를 저장
설치가 필요없음
방언 설정이 가능 : 무슨 데이터 모드(Mysql인지 다른 것인지)로 실행할 것인지 설정이 가능함
연결하는 방법 참조
2. application-dev.yml에 설정하기
server: servlet: encoding: charset: utf-8 force: true port: 8080 spring: datasource: driver-class-name: org.h2.Driver url: jdbc:h2:mem:test;MODE=MySQL username: sa password: h2: console: enabled: true # 웹에서 콘솔에 접근할 수 있게 활성화 jpa: hibernate: ddl-auto: create # 서버 실행 시 테이블 생성
![notion image](https://image.inblog.dev?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F8a47dc81-2a0f-4b7c-854a-6cd86ec3b678%252F89a9a17d-3845-4a3f-aad8-da8ad758df76%252FUntitled.png%3Ftable%3Dblock%26id%3D49681ec0-a650-405b-850e-68b86cea03a2%26cache%3Dv2&w=2048&q=75)
![notion image](https://image.inblog.dev?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F8a47dc81-2a0f-4b7c-854a-6cd86ec3b678%252Fd55cc177-1c60-4e63-bf94-f8100c53cf5e%252FUntitled.png%3Ftable%3Dblock%26id%3De9e395af-1ac4-498e-82d8-146d2d091c68%26cache%3Dv2&w=2048&q=75)
3. JPA(Java Persistence API)
API : Application Programming Interface
- Java를 사용하여 DB와의 관계형 데이터를 영구적으로 저장하고 검색하기 위한 API
- Java의 객체를 관계형 DB에 매핑하는 기술을 제공
객체와 DB 간의 매핑 작업을 간소화
- SQL 쿼리를 직접 작성하는 대신 Java 객체를 사용하여 DB와 상호 작용 가능
- 다양한 인터페이스와 메서드를 제공
- 내가 만든 오브젝트로 바로 받을 수 있음 // 굉장히 편함
ex) 서버(자바) - - - - - - - 디비
셀렉트 요청 : ResultSet 테이블 형태 데이터(rs)를 응답 받음
커서를 내리면서 파싱 → 자바 오브젝트에 넣음 // 이 과정이 항상 필요함
![notion image](https://image.inblog.dev?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F8a47dc81-2a0f-4b7c-854a-6cd86ec3b678%252F2f633e3d-98b3-4b62-96de-d47d9375e8de%252FUntitled.png%3Ftable%3Dblock%26id%3Df0fa943f-dd9c-4276-8527-fecf80f6e401%26cache%3Dv2&w=2048&q=75)
4. User에 제약조건 설정하기
- @Colum을 사용하여 제약 조건 설정하기
- unique=true : 유일해야함, 중복 안됨
- length = 60 : 최대 길이 60자
- nullable = false : 비어놓는것 안됨
![notion image](https://image.inblog.dev?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F8a47dc81-2a0f-4b7c-854a-6cd86ec3b678%252F8e7b1e6b-8c09-4a2c-868a-2ec1988fef24%252FUntitled.png%3Ftable%3Dblock%26id%3Dc617922b-f660-4b4e-b326-bde3d0b9d2d6%26cache%3Dv2&w=2048&q=75)
package shop.mtcoding.blog.user; import lombok.Data; import jakarta.persistence.*; @Data // getter, setter, toString @Entity // @Table(name = "user_tb") public class User { // user DB값 담기 @Id // 프라이머리 키 @GeneratedValue(strategy = GenerationType.IDENTITY) // auto increament private int id; @Column(unique=true) private String username; @Column(length = 60, nullable = false) // 길이 조정, 널 불가 private String password; private String email; }
![notion image](https://image.inblog.dev?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F8a47dc81-2a0f-4b7c-854a-6cd86ec3b678%252F3b978578-4a9a-491f-868f-927d6291da63%252FUntitled.png%3Ftable%3Dblock%26id%3D7ed02d7c-4f81-45d4-aa7f-53432b73fe6e%26cache%3Dv2&w=2048&q=75)
5. JPA의 Hibernate
- 스프링이 실행될 때 전체 스캔 → 엔티티를 검색 → 있는 전체 클래스 찾기
→ 테이블 생성 쿼리 생성하고 실행
- 개발 모드에서만 사용 : 리플렉션
![notion image](https://image.inblog.dev?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F8a47dc81-2a0f-4b7c-854a-6cd86ec3b678%252Ff4338cca-8f70-4ea9-8266-efdff6721f22%252FUntitled.png%3Ftable%3Dblock%26id%3D8d0fa9b1-29ba-4dbe-9856-d694eadeae42%26cache%3Dv2&w=2048&q=75)
7. 가독성 좋게 표기법 설정하기
- application-dev.yml에 변경하기
server: servlet: encoding: charset: utf-8 force: true port: 8080 spring: datasource: driver-class-name: org.h2.Driver url: jdbc:h2:mem:test;MODE=MySQL username: sa password: h2: console: enabled: true # 웹에서 콘솔에 접근할 수 있게 활성화 jpa: hibernate: ddl-auto: create # 서버 실행 시 테이블 생성 show-sql: true properties: hibernate: format_sql: true # 표기방법 바꾸기
![notion image](https://image.inblog.dev?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F8a47dc81-2a0f-4b7c-854a-6cd86ec3b678%252Fc47a2036-4389-4733-bfe6-2bbd0e7d8c5a%252FUntitled.png%3Ftable%3Dblock%26id%3D76e86718-d67b-4478-bdb7-1d90a98ec540%26cache%3Dv2&w=2048&q=75)
Share article