본문 바로가기

전체 글

(124)
[Spring Boot] Mongo DB 1. MongoDB JSON 기반의 도큐먼트 데이터베이스 스키마가 없음 Redis와 비슷하게 콘솔에 접근해서 확인 가능 2. 의존성 추가 org.springframework.boot spring-boot-starter-data-mongodb 3. MongoDB 설치 및 실행 (도커) ① MongoDB 설치 docker run -p 27017:27017 --name mongo_boot -d mongo ② 실행 docker exec -i -t mongo_boot bash mongo 4. 스프링 데이터 몽고DB ① collection : table이름 정도라고 보면 됨 @Document(collection = "accounts") public class Account { @Id private String id..
[Spring Boot] Redis 1. Redis 캐시, 메시지 브로커, 키/밸류 스토어 등으로 사용 가능 2. 의존성 추가 org.springframework.boot spring-boot-starter-data-redis 3. Redis 설치 및 실행 (도커) ① Redis 설치 docker run -p 6379:6379 --name redis_boot -d redis ② 실행 docker exec -i -t redis_boot redis-cli 4. 스프링 데이터 Redis https://projects.spring.io/spring-data-redis/ StringRedisTemplate 또는 RedisTemplate extends CrudRepository # RedisRunner @Component public class Re..
[Spring Boot] 데이터베이스 마이그레이션 - Flyway 1. 의존성 추가 org.flywaydb flyway-core 2. 마이그레이션 디렉토리 db/migration 또는 db/migration/{vendor} (특정 벤더마다 만들 수도 있음) spring.flyway.locations로 변경 가능 ex) resources/db/migration 3. 마이그레이션 파일 이름 V숫자__이름.sql V는 꼭 대문자로 숫자는 순차적으로 (타임스탬프 권장) 숫자와 이름 사이에 언더바 두 개 이름은 가능한 서술적으로 ex) V1__init.sql # 마이그레이션 디렉토리 안에 마이그레이션 파일이 없는 경우 # 파일 이름이 소문자로 시작하는 경우 # 정상적으로 실행 시 -- V1__init.sql drop table if exists account; drop sequ..
[Spring Boot] 데이터베이스 초기화 1. JPA를 사용한 데이터베이스 초기화 spring.jpa.hibernate.ddl-auto - update/create-drop/create로 설정 시 자동으로 스키마 생성 - update (사용 권장) : 기존에 있는 스키마는 그대로 두고, 추가된 것만 변경 / 컬럼명 변경시 기존 컬럼 삭제되지 않음 - create-drop : 처음에 생성되고, 어플리케이션 종료 시 스키마 삭제 - create : 초반에 띄울 때, 삭제 후 재생성 spring.jpa.generate-ddl=true로 설정 해줘야 동작함 ! 운영 환경일 경우 spring.jpa.hibernate.ddl-auto=validate spring.jpa.generate-ddl=false # Account Entity @Entity publ..
[Spring Boot] Spring-Data-JPA 1. 의존성 추가 org.springframework.boot spring-boot-starter-data-jpa 2. ORM(Object Relational Mapping) 객체와 릴레이션을 매핑할 때 발생하는 개념적 불일치를 해결하는 프레임워크 JPA(Java Persistence API): ORM을 위한 JAVA(EE) 표준 3. 스프링 데이터 JPA JPA 표준 스펙을 아주 쉽게 사용할 수 있도록 Spring-Data로 추상화 시켜 놓은 것 구현체 : Hibernate Spring-Data-JDBC의 기능을 전부 + 부가적인 기능 원래는 @EnableJpaReopositories를 사용해서 설정을 해야 spring-data-jpa 사용 가능하지만 해당 부분이 자동설정되기 때문에 필요없음 Sprin..
[Spring Boot] Postgre SQL 1. 의존성 추가 org.postgresql postgresql 2. PostgreSQL 설치 및 서버 실행 (docker) ① PostgreSQL 설치 docker run -p 5432:5432 -e POSTGRES_PASSWORD=pass -e POSTGRES_USER=hhlin -e POSTGRES_DB=springboot --name postgres_boot -d postgres ② postgres_boot 컨테이너에서 bash 실행 docker exec -i -t postgres_boot bash ③ user를 postgres로 변경 su - postgres ④ springboot DB에 접근 psql springboot ※ 참고 - FATAL: role "postgres" does not ex..
[Spring Boot] MySQL 설정하기 1. DBCP DataBase Connection Pool 커넥션을 만드는 과정이 오래 걸리기 때문에, 미리 여러 개의 커넥션을 만들어놓고 어플리케이션이 필요로 할 때 만들어져있는 커넥션을 가져다 쓰는 방법 몇 개를 만들 것인지, 얼마동안 안쓰이면 없앨 것인지, 최소 몇 개를 유지할 것인지, 얼마동안 커넥션을 어플리케이션에 던지지 못하면 에러를 던질 것인지 등 여러 설정 가능 어플리케이션 성능에 핵심적인 역할 2. Spring Boot가 지원하는 DBCP HikariCP (기본) Tomcat CP Commons DBCP2 -> 세 가지 DBCP가 클래스패스에 있는 경우, HikariCP를 사용 3. HikariCP https://github.com/brettwooldridge/HikariCP#freque..
[Spring Boot] 인-메모리 데이터베이스 1. Spring Boot에서 지원하는 인-메모리 데이터베이스 H2 HSQL Derby H2 의존성이 클래스패스에 들어있고 아무런 데이터 소스 설정을 하지 않으면 스프링 부트는 자동으로 인메모리 데이터베이스를 설정해줌 2. DataSource, JdbcTemplate Spring-JDBC가 클래스패스에 있으면 자동 설정이 필요한 빈을 설정해줌 spring-boot-starter-jdbc 의존성이 있으면 DataSource, JdbcTemplate 빈이 자동 설정됨 @Autowired로 DataSource, JdbcTemplate 주입받을 수 있음 org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\ org.springframe..
[Spring Boot] CORS 1. SOP과 CORS Cross-Origin Resource Sharing Single-Origin Policy를 우회하기 위한 표준 기술 (SOP, CORS 모두 웹 브라우저가 지원하는 기술) SOP는 같은 Origin에만 요청을 보낼 수 있고 CORS는 서로 다른 Origin끼리 리소스를 공유할 수 있는 방법을 제공하는 표준 (기본적으로는 SOP가 적용되어 있어서 Origin이 다른 경우 호출하지 못함) ex) 어떤 REST API를 제공하는 서버가 http://localhost:8080에서 제공이 되고 있고, 해당 REST API를 http://localhost:8443 사용하는 어플리케이션이 호출하지 못함 -> SOP 위반 2. Origin : 스키마, hostname, 포트를 조합한 것 URI..
[Spring Boot] Spring HATEOAS 1. HATEOAS Hypermedia As The Engine Of Application State 서버: REST API에서 리소스에 대한 정보를 제공할 때, 현재 리소스와 연관된 링크 정보를 클라이언트에게 제공한다. 클라이언트: 연관된 링크 정보를 바탕으로 리소스에 접근한다. 연관된 링크 정보 - Relation(rel) - Hypertext Reference(href) spring-boot-starter-hateoas 의존성 추가 org.springframework.boot spring-boot-starter-hateoas ObjectMapper 제공 - spring.jackson.* 사용해서 커스터마이징 가능 (application.properties) - Jackson2ObjectMapperB..