본문 바로가기

springboot29

Spring Data - Neo4j 사용 Springboot Spring Data - Neo4j Neo4j는 노드와 연관관계를 영속화하는데에 RDB 보다 다양한 장점이 있는 데이터베이스이다. 의존성추가 pom.xml org.springframework.boot spring-boot-starter-data-neo4j Docker로 Neo4j 설치, 실행 $ docker run -p 7474:7474 -p 7687:7687 --name springboot-neo4j -d neo4j http 프로토콜용 포트(7474), 볼트(bolt) 프로토콜용 포트(7687)를 각각 매핑해주어야 한다. 7474 포트에서 동작하는 브라우저가 서버에 매핑 될 수 있다. -d 데몬 옵션으로 neo4j 이미지를 실행한다. (이미지가 없으면 자동으로 docker hub에서.. 2021. 1. 20.
Spinrg data 초기화, migration Springboot - Spring Data 초기화, migration 초기화 JPA로 DB 초기화 application.properties spring.jpa.hibernate.ddl-auto=update update : 자동으로 DB schema(테이블, 칼럼 등)가 생성된다. 기존에 것은 냅두고, 새로운 스키마를 추가해준다. create : 이미 있던 스키마를 제거하고 새로 스키마 생성한다. 안에 있던 데이터도 삭제된다. create-drop : 자동 스키마 생성하고 종료할 때 삭제한다. spring.jpa.generate-ddl=true 이 옵션도 추가해야 스키마가 생성된다. 운영용 환경에서는 아래와 같이 사용하면 객체가 엔터티와 잘 매핑이 되어있는 지 검증하는데 유용하다. spring.jpa.h.. 2021. 1. 20.
Springboot - Spring Data JPA Springboot 014 - Spring Data JPA ORM (Object Relational Mapping) 자바 코드는 객체 지향 프로그래밍인데 이를 릴레이션과 매핑할 때 개념적으로 불일치가 일어난다. 예를들면 객체의 다양한 크기들을 데이터 테이블에 어떻게 매핑을 시킬 수 있는가? 객체는 상속이 있지만, 테이블은 상속이 없는데 어떻게 매핑 할 것인가? Identity 는 객체의 경우 해쉬코드, equals method 를 통해 알지만, 테이블의 경우 인덱스 컬럼이 있다. 서로 다른 Object 와 Relation은 어떻게 일치시키는가? 에 관한 문제가 있다. ORM 은 이를 해결하기 위한 프레임워크고, 자바 (EE) ORM 표준으로 JPA 가 있다. 스프링 데이터 JPA는 위에서 말한 JPA를 .. 2021. 1. 20.
Spring Data - PostgreSQL Springboot Spring Data - PostgreSQL PostgreSQL 은 무료 오픈소스 DBMS 이다. 스프링 데이터와 연동하는 법을 알아보자. 우선 의존성에 포스트그레스큐엘을 추가한다. pom.xml org.postgresql postgresql 그리고 스프링 데이터소스에 DB 서버와 데이터베이스를 연동시켜주고, 접속 아이디와 비밀번호를 알려주자. application.properties spring.datasource.url=jdbc:postgresql://localhost:5432/springboot spring.datasource.username=wordbe spring.datasource.password=1234 이제 postgreSQL 을 도커에서 실행시켜보자. $ docker .. 2021. 1. 20.
Spring Data - MySQL Springboot - Spring Data - MySQL DBCP DataBase Connection Pool 스프링부트는 기본적으로 HikariCP 를 사용한다. 그 외 Tomcat CP, Commons DBCP2 를 지원한다. HikariCP 의 몇가지 속성을 살펴보자. autoCommit : 자동으로 작업결과를 커밋한다. connectionTimeout : DB 에게 요청이 있을 시 연결을 시도하고 있을 시간을 설정한다. 짧을수록 에러가 잘 날 것이다. (기본은 30초다.) maximumPoolSize : 동시에 작업을 할 수 있는 최대 풀 개수는 CPU 코어 수보다 같거나 작다. Hikari 설정을 프로퍼티 파일에서 할 수 있다. 자세한 속성은 HikariConfig 클래스에서 찾아 볼 수 있다.. 2021. 1. 20.
Spring Data - 인메모리 DB Springboot - Spring Data - 인메모리 DB 스프링이 지원하는 인메모리 데이터베이스는 H2, HSQL, Derby가 있다. Spring JDBC (Java DataBase Connectivity) 가 클래스패스에 있으면 DB와 자바를 연결해주는 빈 클래스를 자동 설정해준다. 이렇게 H2, JDBC가 의존성에만 적혀있다면 스프링부트는 기본적으로 H2 인메모리 데이터베이스를 자동설정해준다. JDBC와 H2 database 의존성을 추가한다. org.springframework spring-jdbc com.h2database h2 아마존 제공 java 인 corretto 를 사용했었는데, 위와같이 jdbc를 연동하면 DataSource가 빈으로 자동등록이 안되었다. 따라서 jdbc 의존성 등.. 2021. 1. 20.
Springboot - Exception, HATEOAS, CORS Springboot - Web MVC ExceptionHandler 에러를 처리하는 클래스를 만들어보자. 스프링 MVC 에서 어노테이션 기반 에러처리이다. /except 요청을 받을 시 예외객체를 리턴한다. @Controller public class ExceptionController { @GetMapping("/except") public String except() throws SampleException { throw new SampleException(); } @ExceptionHandler(SampleException.class) public @ResponseBody AppError sampleError(SampleException e) { AppError appError = new AppEr.. 2021. 1. 19.
Springboot - 템플릿, HtmlUnit Springboot - Web MVC 템플릿 엔진 템플릿 엔진은 주로 뷰를 만들 때 사용한다. 코드 제너레이션, 이메일 템플릿 등을 만들 때도 사용한다. 스프링 부트가 자동 설정을 지원하는 템플릿 엔진은 FreeMarker, Groovy, Thymeleaf, Mustache 이다. JSP 는 자동설정을 지원하지도 않고, 권장하지도 않는다. jar 패키징 할 때 동작하지 않고, war 로 패키징 해야하기 때문이고, 특히 톰캣이 아닌 undertow 웹서버의 경우는 jsp를 아예 지원하지 않는다. 템플릿 엔진 중 타임리프(Thymeleaf)를 간단히 사용해보자. org.springframework.boot spring-boot-starter-thymeleaf 의존성을 추가한다. 컨트롤러를 하나 만들어서 /b.. 2021. 1. 19.
Springboot - Web MVC Spring Web MVC 스프링부트에서는 sprin-boot-starter-web 의존성을 추가하면 스프링 webmvc 를 사용할 수 있다. spring-boot-autoconfigure 에서 자동으로 설정이 되는데 spring.factories 중에 WebMvcAutoConfiguration 클래스를 사용하게 된다. 스프링 부트 웹 MVC 는 이렇게 스프링 웹 MVC 에 몇가지 컨벤션을 더 추가하여 잘 정리해놓은 라이브러리이다. 스프링 MVC 를 확장하려면 @Configuration 과WebMvcConfigurer 를 사용하면 된다. 또한 스프링 MVC 를 재정의하려면 @Configuration 과 @EnableWebMvc 를 사용하면 된다. HttpMessageConverters HTTP 요청 본문.. 2021. 1. 18.
Springboot - Devtools, Live Reload Devtools 스프링부트는 devtools (개발도구) 라이브러리의 도움으로 좀 더 편한 환경에서 개발을 할 수 있다. 사용을 위해서는 의존성을 먼저 추가한다. pom.xml org.springframework.boot spring-boot-devtools Devtools 는 캐시 설정을 개발 환경에 맞게 변경해준다. 클래스패스 안의 파일들이 변경 될 때마다 자동으로 재시작을 해준다. 파일 변경후 빌드만 다시해주면 된다. 인텔리제이에서 빌드 단축키는 ⌘ + F9 이다. 어플리케이션 실행을 직접 끄고 켜는것 (cold starts) 보다는 빠르지만, 리로링보다는 느리다. 리스타트 하고 싶지 않은 리소스는 프로퍼티에 spring.devtools.restart.exclude 로 추가해주면 된다. Live R.. 2021. 1. 17.
728x90