Back-end 11

MySQL 연동 (기존 H2 DB 사용)

MySQL으로 DB 교체하기 build.gradle에 MySQL에 대한 의존성 추가 implementation 'mysql:mysql-connector-java:8.0.32' application.yml 설정 파일 수정 datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/{DB이름}?useSSL=false&serverTimeZone=Asia/Seoul&characterEncoding=utf-8 username: {사용자} password: {비밀번호} 비밀번호는 대문자, 소문자, 숫자, 특수문자가 포함된 8자 이상으로 설정해야 한다. 비밀번호 재설정 없이 스프링 서버를 실행했다가 오류를 마주했다. ..

Back-end/Spring 2024.03.08

서버 성능 최적화

성능 향상을 왜 해야할까? 애플리케이션 로딩 속도가 느리면 사용자의 이탈률이 높다는 조사 결과가 있다. 구글의 설문 자료에 따르면 3초 안에 페이지 로딩이 되지 않으면 53%의 사용자가 떠나고 길어질수록 이탈률이 늘어난다. 성능 향상을 위한 방법은 무엇이 있을까? 캐시(Cache) 사용 캐시란 나중에 요청할 결과를 미리 저장해둔 후 빠르게 서비스 해주는 것을 의미한다. 미리 결과를 저장하고 나중에 요청이 오면 그 요청에 대해서 DB 또는 API를 참조하지 않고 캐시에 접근하여 요청을 처리하게 된다. 애플리케이션의 성능을 최적화하기 위해 캐시를 사용하는 방법을 익히면 전체적인 시스템 성능 향상에 큰 도움이 된다. 대표적인 캐시 도구로는 Redis, Memcached 등이 있다. 캐시 사용 구조 Look A..

Back-end 2023.10.17

ResponseEntity 클래스

ResponseEntity ResponseEntity는 다양한 생성자와 메서드를 가지고 있어 다양한 종류의 응답을 처리할 수 있다. 예를 들어, 'ResponseCntity.ok(body)는 HTTP 상태 코드를 200으로 설정하고, 응답 본문에 body를 설정하는 메서드이다. @RestController public class MyController { @GetMapping("/getSomething") public ResponseEntity getSomething() { String responseString = "This is the response body"; return ResponseEntity.ok(responseString); } } 위의 코드에서 getSomething 메서드는 Respo..

Back-end/Spring 2023.10.17

클라우드 컴퓨팅 & AWS

클라우드 컴퓨팅이란? 클라우드 컴퓨팅은 사용자가 자체 인프라를 관리하고 유지하는 대신 인터넷을 통해 공유 컴퓨팅 리소스에 액세스할 수 있는 IT 서비스 제공 모델이다. 클라우딩 컴퓨터는 스토리지, 컴퓨팅 성능 및 소프트웨어 애플리케이션과 같은 확장 가능한 리소스에 대한 온디맨드 액세스를 가능하게 하여 비용 절감, 민첩성 향상 및 IT 복잡성 감소와 같은 이점을 제공한다. * 온디맨드: 주문형 서비스(소비자가 있는 곳까지 찾아가서 상품과 서비스를 전달하는 것, 이용자의 요구에 따라 상품이나 서비스가 바로 제공되는 것) AWS(Amazon Web Service)란? AWS는 Amazon.com에서 제공하는 클라우드 컴퓨팅 플랫폼을 구성하는 원격 컴퓨팅 서비스(웹 서비스) 모음이다. 컴퓨팅 성능, 스토리지, ..

Back-end 2023.10.17

어노테이션, HandlerMethodArgumentResolver, DTO

@Target 자바 어노테이션을 정의할 때 사용되는 메타어노테이션 중 하나이다. 메타어노테이션은 다른 어노테이션을 설명하거나 제한하는데 사용된다. 1. ElementType.TYPE: 클래스, 인터페이스, 열거형 등에 적용 가능 2. ElementType.FIELD: 필드에 적용 가능 3. ElementType.METHOD: 메서드에 적용 가능 4. ElementType.PARAMETER: 메서드의 파라미터에 적용 가능 5. ElementType.CONSTRUCTOR: 생성자에 적용 가능 @Retention 어노테이션의 수명을 설정하는데 사용되는 메타어노테이션이다. 어노테이션이 유지(retained)되는 기간을 지정한다. 1. RetentionPolicy.RUNTIME: 어노테이션이 런타임에도 사용 가능..

Back-end/Spring 2023.10.10

JPA, Hibernate 에러 -> org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing :

에러 org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : 원인 -> FK로 사용되는 컬럼 값이 없는 상태에서 데이터를 추가하려다 나타난 에러이다. 예를 들어, Character 컬럼이 PK, Exp 컬럼이 FK일 때, PK 데이터를 넣지 않고 FK 데이터를 추가하려고 할 때 발생하는 오류이다. 해결 방법 연관관계 매핑 어노테이션(@OneToOne, @OneToMany, @ManyToOne)을 사용할..

Back-end/Spring 2023.09.25

Maven 이란?

Maven은 자바 프로젝트의 빌드를 자동화해주는 빌드 도구이다. Maven은 프로젝트의 전체적인 라이프사이클을 관리하는 도구이다. 프로젝트 POM이라는 개념을 바탕으로 프로젝트의 의존성 관리, 라이브러리관리, 프로젝트 라이프사이클 관리 기능 등을 제공하는 프로젝트 관리 도구이다. 플러그인을 기반으로 소스 코드로부터 배포 가능한 산출물을 만들어내는 빌드 기능을 제공한다. 사용할 라이브러리 이름과 버전만 명시하면 라이브러리를 자동으로 내려받고 관리해 준다. 애플리케이션을 빌드하는 표준화된 방법을 제공한다. 1. settings.xml settings.xml은 Maven tool 자체에 관련된 설정을 담당한다. 2. pom.xml 하나의 자바 프로젝트에 빌드 도구로 Maven을 설정했다면, 프로젝트 최상위 디..

Back-end/Spring 2023.07.31

어노테이션(Annotation) 정리

Annotation은 클래스와 메서드에 추가해 사용하며, 다양한 기능을 부여합니다. Annotation을 사용하여 해당 클래스가 어떤 역할을 하는지 정합니다. 이 글에서는 다양한 Annotation에 대해 정리해보려 합니다. @Controller @GetMapping @RequestParam @ResponseBody: 자바 객체를 HTTP 응답 본문의 객체로 변환하여 클라이언트로 전송 @RequestBody: HTTP 요청 본문에 담긴 값들을 자바객체로 변환시켜, 객체에 저장 @Test @Override @Transactional -> 해당 어노테이션은 데이터베이스 트랜잭션을 지원하고 관리하기 위해 사용된다. 1. 트랜잭션 관리: JPA가 트랜잭션을 자동으로 시작하고 종료한다. 때문에 개발자가 직접 트랜..

Back-end/Spring 2023.04.20

[Spring] 오류 목록

1. thymeleaf 오류 WARN 14128 --- [ main] ion$DefaultTemplateResolverConfiguration : Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false) 클래스 실행할 때 WERN이 뜨길래 확인해 봤다. template 폴더 아래 index.html (Welcome Page)를 추가해 주니 해결되었다. 2. SQL 구문 오류 jakarta.persistence.PersistenceException: Conve..

Back-end/Spring 2023.04.18

[Spring] 빌드하기 + 실행하기

명령 프롬프트(cmd)로 빌드하기 cmd 실행 후 spring boot 프로젝트가 저장된 경로로 접근한다. (파일 이름이 hello-spring라고 가정) gradlew 입력 후 엔터키를 누르면 빌드 파일이 생성된다. (윈도우의 경우만 gradlew을 입력하면 됨) 생성된 build 파일로 들어간다. (dir로 확인 후, cd build ) build 파일 안에 libs 파일로 들어간다. (cd libs) lib파일의 파일 목록을 보면 확장자가 .jar인 파일이 들어있다. (hello-spring-0.0.1-SNAPSHOT.jar) java -jar hello-spring-0.0.1-SNAPSHOT.jar 실행 위의 화면이 뜨면 빌드와 실행이 잘 된 것이다. 만약 빌드나 실행이 잘 되지 않는다면 버전 호..

Back-end/Spring 2023.04.12