본문 바로가기

Java6

[Spring boot] HTTP API 만들기 - Hello World! Spring boot로 HTTP API를 만들기 전에, MVC 구조로 웹 애플리케이션이 어떠한 원리로 만들어지고 동작하는지 이해가 필요합니다. 이번 글에서는 간단한 API 1개와 웹페이지 1개를 만들어보고, 그 차이와 원리에 대해서 설명해보겠습니다. 1. 프로젝트 생성 인텔리제이를 기준으로 진행합니다. [프로젝트 환경] Gradle Java 1.8 Spring Boot 2.5.5 [Dependencies] Spring Boot DevTools 자동 재시작 기능 사용 Spring Web 내장 톰캣, 웹, MVC, RESTful 등 대다수 기능 포함 Thymeleaf 웹 개발을 위한 서버사이드 자바 템플릿 엔진 API를 개발하는데 필요하지 않지만, 원리를 설명하고 비교하기 위함. 인텔리제이 얼티메이트 버전을.. 2021. 10. 7.
[Spring boot] JPA Dialect(방언) 설정에 관하여 결론만 말하면 "Dialect 설정은 하지 않아도 된다." 입니다. 1. Dialect 란? ORM의 큰 특징중 하나는 객체 맵핑을 통해 자동으로 쿼리를 작성해주는 것입니다. 하지만 수 많은 DBMS 종류가 있고 각 종류마다 쿼리가 조금씩 다르기 때문에, 이를 알릴 수 있도록 데이터베이스 유형을 지정하도록 하는 것이 Dialect 설정 입니다. 이런 Dialect 설정은 연결되는 Springboot 실행 시, 연결되어있는 데이터베이스에 알맞게 자동으로 지정이 되므로, 특별한 이유가 존재하지 않는 이상 수동으로 설정할 필요가 없습니다. 여러가지 데이터베이스를 하나씩 연결하여 확인해보면 아래 로그와 같이 연결되는 DB에 알맞게 Dialect 설정이 되는 것을 확인할 수 있습니다. 저 처럼 인터넷에 떠돌아다니.. 2020. 11. 11.
spring boot h2 memtestdb not found 문제 h2 console 접근 에러h2 db 버전 문제해결방법h2 db 설정 Spring boot의 어떤 예제를 따라하면서 생산성과 빠른 테스트를 위해 h2 db를 사용했다.gradle에는 아래와 같이 추가되었다.xxxxxxxxxxruntimeOnly 'com.h2database:h2'h2 console 접근 에러 h2 db를 따로 설정하지 않으면 인 메모리 기반으로 db가 생성되어 동작하며, 기본 경로는 mem:testdb라고 명시가 되어있었다.그러나 위 사진처럼 mem:testdb를 찾을 수 없다는 에러가 발생하였다.h2 db 버전 문제gradle에는 따로 버전을 명시하지 않았기 때문에, 최신 버전을 사용했다. (2020.07 기준 1.4.2가 최신)그러나, h2 보안 문제로 testdb를 자동 생성 하지.. 2020. 7. 13.
Spring JPA Multiple Databases 설정 1. 다중 DB 설정 시, 알아야 할 것2. 소스코드2-1. Entity2-2. Repository2-3. DB Configuration2-3-1 application.properties2-3-2 Main Datasource2-3-3 Second Datasource4. Test4.1 hibernate 로그 확인4.2 DB 데이터 확인1. 다중 DB 설정 시, 알아야 할 것다중 DB는 Spring boot 처럼 Auto Configuration되지 않음설정파일(application.yml 또는 application.properties) 값을 읽어와서 연동 할 DB 수 만큼 Datasource를 수동 설정해야함설정파일 대신 코드로 직접 설정할 수 있는 방법도 있음주요 설정 내용리소스 경로 설정Reposito.. 2020. 4. 13.
Spring Data JPA Save(insert) 속도 최적화 대량의 데이터를 삽입하는 상황이 생겼습니다. 초창기에는 JPA Save함수를 반복문을 통해 호출해서 저장하게 구현을 했는데요. 처음에는 괜찮았으나, 삽입 할 데이터가 점점 많아지면서 삽입 시간이 굉장히 오래 걸리게 되었습니다. 그래서 최적화에 신경 쓰게 되었는되었습니다. 자바에서 데이터를 insert하는데 가장 방식은 Spring batch를 이용하여 JPA없이 Writer를 쓰는게 제일 빠릅니다. (관련 글을 추후 포스팅 예정...) 본 포스트에서는 Spring boot에서 JPA를 사용하여 트랜젝션을 최적화하여 속도를 향상시키는 방법으로 알아보겠습니다. 1. 잦은 save 함수 호출의 문제점 @Transactional @Override public S save(S entity) { if (entity.. 2020. 3. 13.
JPA (Java Persistence API) 이란? 기본 개념 및 이론 정리 보호되어 있는 글 입니다. 2019. 8. 1.