BackEnd

BackEnd/Spring

[JPA] 영속성 관리 - 내부 동작 방식

✔ JPA에서 가장 중요한 2가지1. 객체와 관계형 데이터베이스 매핑하기 DB와 객체를 어떻게 설계해서 어떻게 매핑되도록 할 것인가(설계와 관련된 부분) 2. JPA의 동작원리 영속성 컨텍스트 ⚙ 엔티티 매니저 팩토리와 엔티티 매니저클라이언트의 요청이 올때마다 EntityManagerFactory에서 EntityManager를 생성해서 제공한다.EntityManager는 내부적으로 DB Connection을 사용해서 DB를 사용하여 데이터를 제공함. 📦 영속성 컨텍스트JPA를 이해하는데 가장 중요한 용어직역하자면 “엔티티를 영구 저장하는 환경”이라는 뜻EntityManger.persist(entity) 시에 DB에 저장한다는 뜻이 아닌 영속성 컨텍스트를 통해 엔티티를 영속화 한다는 뜻→ DB저장이 아닌,..

BackEnd/Spring

[SpringBoot] [트러블슈팅] 리액트 스프링부트 CORS 에러 해결

스프링부트로 서버 개발 시에, 프론트 단이 React인 경우 서버에 Request를 보냈을 시에 CORS 에러가 발생한다. 그렇다면 CORS란 무엇일까? CORS (Cross-Origin-Resource-Sharing) 란? 🤷‍♂️ 교차 출처 리소스 공유를 뜻하는 CORS는, '서로 다른 출처에서 리소스를 공유하는 것'을 뜻한다. 여기서 말하는 출처란 다음과 같다. URL은 https://www.domain.com:3000/user?query=name&page=1 과 같은 형태로 이루어져 있다. 이 중, 'Protocol, Host, Port' 를 합쳐 부르는 말이 Origin(출처)이다. 이제 이해가 갈 것이다. CORS 허용 설정을 하지 않았을 경우, 서버와 다른 Origin을 가진 곳에서 서버의 ..

BackEnd/Spring

[JPA] JPA 기초

1. SQL 중심적인 개발의 문제점 🤦‍♂️ JPA를 사용하기 전, 데이터 등록 조회 삭제 등의 상황마다 INSERT, UPDATE, SELECT 등 CRUD의 무한 반복! 만약 위와 같은 Member 클래스를 생성했다면 DB에 아래와 같은 SQL문을 입력해주어야함. 이후 Member 클래스에 tel이라는 맴버 변수가 추가되면 UPDATE 쿼리로 DB 테이블 구조를 변경해주어야함. 😢 하지만 SQL에 의존적인 개발을 피하기는 어렵다. 개발자가 객체를 SQL로 변환하여 관계형 데이터 베이스에 넣는 과정이다. 이 과정은 자바를 DB 연동하여 함께 사용할 때, 어쩔 수 없이 거쳐야하는 과정이다. 그림에 있는 "객체 -> SQL 사이의 SQL 변환 과정" 에서 개발자가 SQL 매퍼의 역할을 하고 있었다..!🤦‍..

BackEnd/Docker

[Docker] 도커 MySQL 컨테이너 접속하는 법

도커 MySQL 컨테이너 접속법 도커를 통해 MySQL 컨테이너를 생성하는 경우 MySQL에 직접 접속하여 설정해야하는 상황이 있다. 또는 DB 내부에 제대로 값이 입력되는지 확인하는 등 다양한 상황에서 DB에 접속해야하는 경우가 발생한다. 이때 도커 컨테이너로 열려있는 DB이기 때문에 어떻게 접속하는지 모르는 사람들이 많은데 그 방법에 대해 말해보고자 한다. 본인은 다음과 같은 docker-compose.yml 과 Dockerfile을 통해 생성한 환경에서 테스트한다. docker-compose.yml version: '3' services: app: container_name: app build: ../ restart: always ports: - '8080:8080' depends_on: - dat..

BackEnd/DB

[몽고DB, 스프링부트] Springboot, MongoDB 연동

스프링부트 몽고DB 연결 이번 포스팅에선 스프링부트에 스프링 데이터 몽고디비를 사용하여 DB를 연결하고, 간단한 api를 구현하여 연결이 잘 되었는지 테스트해보는 내용에 대해 다뤄보겠습니다. 아직 몽고DB에 관하여 공부가 더 필요하기 때문에 우선 간단한 내용과 연결 방법을 소개하고 다음 포스팅에서 몽고디비에 관한 내용만을 다루는 포스팅을 작성하겠습니다. 바로 시작하겠습니다. :: Mongo DB :: MongoDB의 기본적인 데이터 구조는 데이터베이스, 컬렉션, 도큐먼트 단위로 관리된다. MongoDB 장점 Schema-less 구조 - 다양한 형태의 데이터 저장 가능 - 데이터 모델의 유연한 변화 가능(데이터 모델 변경, 필드 확장 용이) Read/Write 성능이 뛰어남 Scale Out 구조 - 많..

BackEnd/CICD

[CI/CD] Docker + Jenkins + Github + AWS 사용하여 SpringBoot 서버 CI/CD 구축

Jenkins AWS Github Docker 사용한 CI/CD 구축 안녕하세요. 이번 시간엔 요즘 학습하고 있는 Docker, Jenkins와 Github, AWS를 사용하여 SpringBoot 서버 CI/CD 구축을 진행하는 과정을 보여드리겠습니다. 현재 완벽하게 숙달된 상태가 아닌, 여러 자료들을 찾아보며 처음 성공했던 과정을 기록하는 것입니다. 혹시라도 잘못된 부분이 있다면 댓글로 지적 부탁드리겠습니다!! 바로 시작해보겠습니다. 사용하는 도구 및 환경 Mac Spring boot gradle 7.2 AWS 프리티어 EC2 2대 (젠킨스용,운영용) AWS RDS AWS Secret Manager Mysql Jenkins Java 11 Docker IntelliJ DockerHub Github Int..

BackEnd

WAS(Web Application Server)란 무엇인가

WAS는 Web Application Server의 약자이다. 배포할 때에는 **내장 WAS(스프링부트 기준 Tomcat)**를 사용하게 되고 빌드 시에 생성되는 jar 파일을 실행하면 서버를 가동할 수 있다. 즉, 어떤 환경이든 jvm만 있으면 간단하게 Spring boot 어플리케이션을 동작할 수 있다는 뜻이다. WAS란? 웹 서버와 웹 컨테이너의 결합체 클라이언트의 요청이 있을 때 내부의 프로그램을 통해 응답을 생성하고 이를 돌려주는 역할을 하는 것이다. 스프링부트에서는 Apache tomcat이 이와 같은 역할을 하며 Servlet Container라고 불린다. spring-boot-starter-web 라이브러리는 자체적으로 spring-boot-starter-tomcat을 포함하기 때문에 해당..

BackEnd/AWS

[AWS] AWS S3 사용법 (with. 스프링부트)

AWS S3 사용법 AWS S3란? Amazon S3란 AWS(Amazon Web Service)에서 지원하는 Simple Storage Service의 약자이다. 다시말해 아마존 S3는 아마존 웹 서비스에서 제공하는 온라인 스토리지 웹 서비스이다. 사진, 파일, 폴더 등 다양한 것들을 저장하고 사용할 수 있다. 대부분의 서비스를 무료로 이용할 수 있는 프리 티어 회원에게 제공되는 S3 서비스의 기준이다. 이 이상 사용하게 되면 추가금을 결제해야하는데 유료로 이용해도 생각보다 많이 저렴하니 부담없이 사용할 수 있다. 다시 본론으로 돌아가 프리 티어 가입법을 설명하겠다. 버킷 생성 검색 탭에 'S3'를 검색하여 들어간다. 그럼 이렇게 버킷을 생성하는 화면이 나오는데, 우리는 이제부터 이 '버킷' 이라는 것..

PgmJUN
'BackEnd' 카테고리의 글 목록 (3 Page)