Back-end

Back-end

API 서버의 동작 아키텍처

이 글에서는 일반적인 로그인 상황을 예시로 들어 API 서버가 클라이언트, 데이터베이스와 상호작용할 때 어떤 순서로 동작하고 데이터가 어떻게 이동하는 지에 대해서 알아도록 하겠다.클라이언트 요청사용자가 웹 브라우저나 모바일 앱을 통해 특정 작업을 요청한다.클라이언트는 HTTP/HTTPS 요청을 생성하고 이를 API 서버로 보낸다.ex) 클라이언트가 사용자 로그인을 요청하면, 로그인 폼 데이터가 API 서버로 전송된다.API 서버 수신 및 처리API 서버는 클라이언트의 요청을 수신한다.요청을 분석하고, 필요한 데이터를 추출한다.인증 및 권한 검사를 수행하여 요청의 유효성을 확인한다.ex) API 서버는 로그인 요청을 수신하고, 사용자의 자격 증명을 확인한다.비즈니스 로직 실행API 서버는 요청에 대한 비즈..

Back-end/Spring

Spring에서의 예외 처리

스프링에서는 예외 처리를 더 편리하게 하기 위해 다양한 방법을 제공하는데, 일반적으로 @ExceptionHandler와 @ControllerAdvice를 사용한 예외 처리 방법을 많이 사용한다.1. @ExceptionHandler특정 컨트롤러 내에서 발생하는 예외를 컨트롤러 내에서 처리할 수 있다.@Controllerpublic class ExampleController { @RequestMapping("/divide") public String divide(@RequestParam int a, @RequestParam int b) { int result = a / b; // 예외 발생 가능 return "Result: " + result; } @Except..

Back-end/JPA

순환 참조(+ DTO를 사용해야 하는 이유)

팀 프로젝트를 진행하던 중, 한 팀원이 postman으로 api를 테스트했더니 값이 무한으로 출력된다고 말하면서 해당 부분을 아래처럼 수정했더니 정상 작동한다고 수정해도 되냐고 물었다. @ManyToOne @JoinColumn(name = "group_id") private Group group; -> @Column(name = "group_id") private Long groupId; @OneToMany(mappedBy = "group") private Set groupMembers = new HashSet(); -> @OneToMany(mappedBy = "groupId") private Set groupMembers;JPA는 객체 ..

Back-end/Spring

@Transactional

@Transactional 어노테이션은 Spring에서 사용되는 어노테이션으로 주로 Service 계층에서 사용된다.아무 생각 없이 사용하던 @Transactional이 어떻게 사용되고 어떻게 동작하는지에 대해서 알아보도록 하자. @Transactional 어노테이션은 메서드나 클래스의 트랜잭션 경계를 선언하는 데 사용되는데, 여기서 트랜잭션이란 데이터베이스에서 일련의 작업들이 전부 성공하거나 전부 실패하도록 보장하는 것을 의미하고 이를 통해 데이터의 일관성과 무결성을 유지할 수 있다.@Transactional 어노테이션이 사용된 클래스나 메서드는 Spring이 이들을 트랜잭션 경계 내에서 실행되도록 관리하게 해 준다.주요 개념트랜잭션 경계: 트랜잭션의 시작과 끝을 정의한다. 트랜잭션 경계 내에서 수행된..

Back-end/Spring

Spring Annotation

Spring에서 @Annotation은 다양한 기능을 지원하며, 주로 의존성 주입(Dependency Injection)과 관련된 설정을 간결하게 할 수 있도록 도와준다.주요 어노테이션들을 정리해보자면 아래와 같다.@Component: 이 Annotation은 해당 클래스가 Spring 컨테이너의 구성 요소임을 나타낸다. 다른 구체적인 Annotation들(예: @Controller, @Service, @Repository)은 @Component를 확장하며, 각각 특정 계층의 빈(bean)을 정의하는 데 도움을 준다.@Autowired: 이 Annotation은 의존성 주입(Dependency Injection)을 자동화하는 데 사용된다. Spring은 @Autowired가 붙은 필드나 생성자, 메서드 ..

Back-end/Web

redirect / forward

웹 개발에서 redirect와 forward는 서버가 클라이언트에게 페이지 전환을 지시하는 방법을 나타내는 용어이다. 이 두 가지가 각각 어떤 역할을 하고 어떤 상황에서 사용되는지 알아보자.RedirectRedirect는 서버가 클라이언트에게 다른 URL로 이동하라고 지시하는 방법이다. 이 과정은 클라이언트의 브라우저가 두 번의 요청을 보내도록 만든다.특징:HTTP 응답 코드: 주로 302 (임시 이동)이나 301 (영구 이동) HTTP 상태 코드를 사용한다.브라우저 주소 변경: 클라이언트의 브라우저 주소창이 새 URL로 변경된다.새로운 요청: 클라이언트가 새 URL로 새로운 요청을 보내게 되어, 두 개의 서로 다른 HTTP 요청/응답 사이클이 발생한다.URL 노출: 최종적으로 이동한 URL이 클라이언트..

Back-end/JPA

JPA - 0. 개념

1. JPA란JPA(Java Persistence API)는 자바 애플리케이션에서 관계형 데이터베이스를 관리하고 조작하기 위한 표준 API로 자바 객체와 데이터베이스 테이블 간의 매핑을 통해 데이터베이스와의 상호작용을 단순화하고, 객체 지향적인 방식으로 데이터 관리를 할 수 있도록 도와주는 API다.객체-관계 매핑(ORM, Object-Relational Mapping)을 제공하여, SQL을 사용하지 않고도 데이터베이스 작업을 할 수 있게 하는 것이 목표라고 할 수 있다.2. ORM?ORM은 객체 지향 프로그래밍 언어에서 정의된 객체와 관계형 데이터베이스의 테이블을 자동으로 매핑해주는 기술이다.ORM을 사용하면 아래의 장점을 기대할 수 있다.데이터베이스와 상호작용할 때 반복되는 코드 작성을 줄여줌.객체 ..

sngyng
'Back-end' 카테고리의 글 목록