이 글에서는 일반적인 로그인 상황을 예시로 들어 API 서버가 클라이언트, 데이터베이스와 상호작용할 때 어떤 순서로 동작하고 데이터가 어떻게 이동하는 지에 대해서 알아도록 하겠다.클라이언트 요청사용자가 웹 브라우저나 모바일 앱을 통해 특정 작업을 요청한다.클라이언트는 HTTP/HTTPS 요청을 생성하고 이를 API 서버로 보낸다.ex) 클라이언트가 사용자 로그인을 요청하면, 로그인 폼 데이터가 API 서버로 전송된다.API 서버 수신 및 처리API 서버는 클라이언트의 요청을 수신한다.요청을 분석하고, 필요한 데이터를 추출한다.인증 및 권한 검사를 수행하여 요청의 유효성을 확인한다.ex) API 서버는 로그인 요청을 수신하고, 사용자의 자격 증명을 확인한다.비즈니스 로직 실행API 서버는 요청에 대한 비즈..
스프링에서는 예외 처리를 더 편리하게 하기 위해 다양한 방법을 제공하는데, 일반적으로 @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..
팀 프로젝트를 진행하던 중, 한 팀원이 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는 객체 ..
@Transactional 어노테이션은 Spring에서 사용되는 어노테이션으로 주로 Service 계층에서 사용된다.아무 생각 없이 사용하던 @Transactional이 어떻게 사용되고 어떻게 동작하는지에 대해서 알아보도록 하자. @Transactional 어노테이션은 메서드나 클래스의 트랜잭션 경계를 선언하는 데 사용되는데, 여기서 트랜잭션이란 데이터베이스에서 일련의 작업들이 전부 성공하거나 전부 실패하도록 보장하는 것을 의미하고 이를 통해 데이터의 일관성과 무결성을 유지할 수 있다.@Transactional 어노테이션이 사용된 클래스나 메서드는 Spring이 이들을 트랜잭션 경계 내에서 실행되도록 관리하게 해 준다.주요 개념트랜잭션 경계: 트랜잭션의 시작과 끝을 정의한다. 트랜잭션 경계 내에서 수행된..
Spring에서 @Annotation은 다양한 기능을 지원하며, 주로 의존성 주입(Dependency Injection)과 관련된 설정을 간결하게 할 수 있도록 도와준다.주요 어노테이션들을 정리해보자면 아래와 같다.@Component: 이 Annotation은 해당 클래스가 Spring 컨테이너의 구성 요소임을 나타낸다. 다른 구체적인 Annotation들(예: @Controller, @Service, @Repository)은 @Component를 확장하며, 각각 특정 계층의 빈(bean)을 정의하는 데 도움을 준다.@Autowired: 이 Annotation은 의존성 주입(Dependency Injection)을 자동화하는 데 사용된다. Spring은 @Autowired가 붙은 필드나 생성자, 메서드 ..
웹 개발에서 redirect와 forward는 서버가 클라이언트에게 페이지 전환을 지시하는 방법을 나타내는 용어이다. 이 두 가지가 각각 어떤 역할을 하고 어떤 상황에서 사용되는지 알아보자.RedirectRedirect는 서버가 클라이언트에게 다른 URL로 이동하라고 지시하는 방법이다. 이 과정은 클라이언트의 브라우저가 두 번의 요청을 보내도록 만든다.특징:HTTP 응답 코드: 주로 302 (임시 이동)이나 301 (영구 이동) HTTP 상태 코드를 사용한다.브라우저 주소 변경: 클라이언트의 브라우저 주소창이 새 URL로 변경된다.새로운 요청: 클라이언트가 새 URL로 새로운 요청을 보내게 되어, 두 개의 서로 다른 HTTP 요청/응답 사이클이 발생한다.URL 노출: 최종적으로 이동한 URL이 클라이언트..
1. JPA란JPA(Java Persistence API)는 자바 애플리케이션에서 관계형 데이터베이스를 관리하고 조작하기 위한 표준 API로 자바 객체와 데이터베이스 테이블 간의 매핑을 통해 데이터베이스와의 상호작용을 단순화하고, 객체 지향적인 방식으로 데이터 관리를 할 수 있도록 도와주는 API다.객체-관계 매핑(ORM, Object-Relational Mapping)을 제공하여, SQL을 사용하지 않고도 데이터베이스 작업을 할 수 있게 하는 것이 목표라고 할 수 있다.2. ORM?ORM은 객체 지향 프로그래밍 언어에서 정의된 객체와 관계형 데이터베이스의 테이블을 자동으로 매핑해주는 기술이다.ORM을 사용하면 아래의 장점을 기대할 수 있다.데이터베이스와 상호작용할 때 반복되는 코드 작성을 줄여줌.객체 ..