springboot(5)
-
JPA 구조는 어떻게 되어있고 spring-data-jpa와는 뭐가 다를까?
JPA는 Java Persistence API로, 자바 객체와 DB를 매핑하기 위한 인터페이스를 제공하는 자바 ORM 기술의 표준 명세입니다. SQL Mapper ORM sql과 객체를 매핑 DB와 객체를 매핑 mybatis, jdbcTemplate 등 hibernate, EclipseLink 등 개인적으로 mybatis를 썼을 때는 복잡한 sql문이 필요할 때는 비교적 편리하게 작성할 수 있다는 장점이 있었습니다. 하지만 DB를 중간에 변경하기 어렵고, 기획 변경사항이 생길 때마다 sql문을 일일이 수정해줘야하는 반복 작업을 수행해야 했습니다. 그래서 CRUD를 하루종일 짜고 있는 개발에서 벗어나 비즈니스 로직에 집중하기 위해 ORM 에 관심을 가지게 되었습니다. ❓ORM이란 객체는 객체대로, DB는 ..
2022.01.06 -
[Springboot] '최근 읽은 글' Dto로 Redis에 저장하고 조회하기 AtoZ (2) - 수정, 삭제 편
2021.06.18 - [🌱 Develop/Server] - [Springboot] '최근 읽은 글' Dto로 Redis에 저장하고 조회하기 AtoZ [Springboot] '최근 읽은 글' Dto로 Redis에 저장하고 조회하기 AtoZ ❓ redis 를 선택한 이유 블로그 홈페이지를 만드는 프로젝트에서, "최근 읽은 글" 을 개발해야하는 상황이 있었습니다. velog 같은 서비스에서는 꽤 오랜 기간동안 내가 읽은 글을 저장하는 듯 했 tape22.tistory.com 이전 글에서는 간단하게 redis에 list로 조회한 글 Dto를 저장하였습니다. 하지만 실제로 프론트에 배포를 하고 나니, 크게 두 가지 이슈를 간과하고 있어서 두 번째 글을 쓰게 되었습니다. 현재 로직으로는 postIdx 를 통해 해..
2021.06.24 -
[Springboot] '최근 읽은 글' Dto로 Redis에 저장하고 조회하기 AtoZ
❓ redis 를 선택한 이유 블로그 홈페이지를 만드는 프로젝트에서, "최근 읽은 글" 을 개발해야하는 상황이 있었습니다. velog 같은 서비스에서는 꽤 오랜 기간동안 내가 읽은 글을 저장하는 듯 했는데, 현재 프로젝트의 기획에서는 일주일이라는 기간이 지정되어있었습니다. 처음에는 테이블을 하나 더 생성해야하나 고민이 되었는데, 읽은 글 특성 상 단기간에 많은 데이터가 수집된다는 점과 만료 기간을 설정하는 것이 성능 상으로 좋지 않을 것이라고 생각했습니다. 그러다 이전 프로젝트에서 refreshToken을 저장할 때 redis를 사용했던 것이 생각나서, redis로 조회한 글 데이터를 캐싱하고, 일정 기간이 지나면 삭제되는 기능을 적용해보고자 합니다. 📌 구현해야하는 기능 redis list 자료형을 사..
2021.06.18 -
Springboot Gradle + AWS EC2 + Jenkins + Docker로 배포까지(3) : Jenkins gradle 아이템 생성 및 설정하기
1️⃣ 아이템 생성, 설정하기 이전 포스팅에서 아이템을 만들기 위한 사전 준비가 완료되었습니다. 이제 새로운 item을 눌러서 아이템을 만들어봅시다. freestyle project로 원하는 이름의 프로젝트를 생성한 뒤, 소스 관리에서 아까 Credential에 추가한 깃헙 키를 적용해줍니다. 1번째 방식인 깃허브 아이디/비번 입력 대신 ssh 키로 인증하는 것입니다. 저는 master 브랜치에 push 하는 이벤트가 발생할 때 빌드하도록 설정해두었습니다. Build Invoke Gradle script를 선택하고 gradle 버전은 이전 포스팅에서 미리 저장한 gradle로 설정해줍니다. 2️⃣ 빌드 테스트해보기 이제 대시보드로 들어가서 Build Now 를 하고 콘솔 출력에서 success를 확인해봅..
2021.04.30 -
Springboot Gradle + AWS EC2 + Jenkins + Docker로 배포까지(4) : Jenkins에서 도커 이미지 배포하기
1. Dockerfile, docker 배포 파일 준비하기 2. Jenkins에서 ssh 설정하기 3. Jenkins 권한 설정하기 원래는 github 올림 → Jenkins에서 github에 올라와있는 springboot 프로젝트를 가져와서 빌드 → 메인 서버에 .jar 형태로 파일을 전송 → 실행 을 하고 싶다면 다음과 같은 방법을 써야하지만, 저는 springboot 서버를 docker 컨테이너에서 실행할 것이므로 다음과 같은 플로우로 가려고 합니다. github 올림 → Jenkins에서 github에 올라와있는 springboot 프로젝트를 가져와서 빌드 → jenkins 컨테이너에서 이미지로 빌드해서 도커 hub에 push → 메인 서버에서는 docker image를 받아서 컨테이너 실행 참고..
2021.04.30