일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- @Repository
- mergeattributes()
- router
- Thymeleaf
- firebase
- db
- Login
- 구글애널리틱스
- GET
- JPA
- 구글알고리즘
- GA4
- Polylang
- @Entity
- 인텔리제이
- post
- 워드프레스
- 구글
- addallattributes()
- linkedhastset
- 리액트오류
- 플러그인
- SEO
- HttpSession
- set
- @Query
- 데이터베이스
- @Controller
- useEffect
- ChatGPT
- Today
- Total
목록개발 준비/Spring Boot (37)
개발천재

ResponseEntity 이해하기ResponseEntity는 Spring Boot에서 HTTP 응답을 보다 세밀하게 조작할 수 있도록 도와주는 클래스이다. 부분에 반환할 데이터 타입(String, List 등)을 지정할 수 있다.JSON 데이터뿐만 아니라, HTTP 상태 코드, 헤더, 바디(내용) 등을 포함한 응답을 반환할 때 사용된다. ResponseEntity 기본 사용법ResponseEntity.status(HttpStatus status)는 응답의 HTTP 상태 코드를 설정하는 메서드이다.이 메서드를 사용하면 200(OK), 400(Bad Request), 404(Not Found) 등 다양한 상태 코드를 응답에 지정할 수 있다. ResponseEntity.body(T body)는 HTTP ..

@RestController 이해하기@RestController는 Spring에서 RESTful 웹 서비스를 쉽게 만들 수 있도록 도와주는 어노테이션이다. 내부적으로 @Controller와 @ResponseBody를 포함하고 있어, 별도로 @ResponseBody를 선언하지 않아도 자동으로 JSON 형식의 데이터를 반환한다. 주로 API를 개발할 때 사용되며, 클라이언트와 서버 간 데이터를 주고받는 엔드포인트를 만들 때 유용하다. 이를 활용하면 HTTP 요청을 처리하고, 적절한 응답을 ResponseEntity와 함께 쉽게 반환할 수 있어 RESTful API 개발을 보다 직관적이고 효율적으로 구현할 수 있다. @RestController의 장점@RestController의 큰 장점은 JSON 데이..

JPA의 Cascade(영속성 전이) 이해하기JPA에서 영속성 전이(Cascade) 란, 부모 엔티티가 저장되거나 삭제될 때 연관된 자식 엔티티도 함께 처리되도록 하는 기능이다. 예를 들어, 부모를 데이터베이스에 저장하면 자식도 자동으로 저장되거나, 부모를 삭제하면 자식도 같이 삭제되도록 설정할 수 있다. 이를 통해 연관된 객체를 일일이 관리하지 않아도 되므로 코드가 간결해지고 유지보수가 쉬워진다는 장점이 있지만 부모를 삭제할 때 자식까지 예상치 않게 삭제될 수도 있으므로 신중하게 사용해야 한다.@Entityclass Parent { @Id @GeneratedValue private Long id; @OneToMany(mappedBy = "parent", cascade = CascadeT..

JPQL 이해하기JPQL(Java Persistence Query Language)은 JPA에서 엔티티 객체를 조회하기 위한 쿼리 언어이다. SQL과 비슷하지만, 테이블이 아니라 "엔티티"를 대상으로 쿼리를 작성한다. 쉽게 말하면 JPQL은 JPA에서 SQL처럼 데이터를 조회하는 방법이고, DB 테이블이 아니라 엔티티(Member, Order, Product 등)를 대상으로 검색한다. JPQL을 실행하면 SQL로 변환되어 DB에서 실행된다. JPQL을 사용하면 객체 중심으로 쿼리를 작성할 수 있어서 유지보수가 쉽고, 데이터베이스에 따라 SQL이 다를 수 있지만, JPQL은 JPA가 자동 변환해준다는 장점이 있다. JPQL을 사용하면 DB 변경 시에도 코드 수정이 적다. JPQL 기본 문법SQL과 비슷하..

데이터베이스에서 테이블 간의 관계를 올바르게 설정하는 것은 애플리케이션의 데이터 무결성과 성능을 유지하는 데 중요한 요소이다. JPA에서는 이러한 관계를 보다 직관적이고 효율적으로 관리할 수 있도록 @ManyToOne, @OneToMany, @OneToOne, @ManyToMany와 같은 매핑 어노테이션을 제공한다. @ManyToOne (다대일 관계)여러 개의 자식이 하나의 부모에 속한다. @ManyToOne은 다대일(N:1) 관계를 매핑할 때 사용하는 JPA 어노테이션으로, 여러 개의 엔티티가 하나의 엔티티를 참조하는 구조를 의미한다. 예를 들어, 여러 개의 주문(Order)이 하나의 회원(User)에 속하는 경우, Order 엔티티에서 User 엔티티를 @ManyToOne으로 매핑할 수 있다. 이..

JPA가 엔티티를 관리하는 "메모리 저장소" 영속성 컨텍스트(Persistence Context) 이해하기쉽게 말해, "영속성 컨텍스트(Persistence Context)"는 JPA가 데이터베이스와 직접 연결하지 않고 엔티티 객체를 관리하는 메모리 공간이다. JPA를 통해 엔티티를 저장하거나 조회하면, 이 객체는 "영속성 컨텍스트"에 보관된다.데이터베이스랑 직접 연결해서 쓰면 매번 SQL을 실행해야 하지만, JPA는 "영속성 컨텍스트"라는 임시 저장소를 이용해서 객체를 메모리에 올려두고 관리할 수 있다.JPA는 엔티티를 직접 DB에 저장하지 않고, 영속성 컨텍스트에 먼저 보관한다! 필요하면 영속성 컨텍스트에서 먼저 꺼내 쓰고, 수정된 내용은 자동으로 DB에 반영된다! 영속성 컨텍스트에서 빼면 더 이상..

페이징 구현하기스프링 부트에서 페이징(Paging)을 구현하는 방법은 Spring Data JPA의 Pageable과 Page 인터페이스를 활용하는 것이다. Page 인터페이스를 사용하면 페이징 정보를 쉽게 가져올 수 있다. getTotalPages(), getTotalElements(), getNumber(), hasNext(), hasPrevious() 같은 유용한 메서드 제공하고 Pageable을 활용하여 PageRequest.of(page, size)로 요청이 가능하다. Pageable을 사용하면 자동으로 페이징 쿼리를 실행한다. 정렬을 추가하려면 Sort 활용하고, 특정 조건으로 페이징하려면 findByXXX(String, Pageable) 사용한다. 컨트롤러에서 Page를 반환하면 JSON 타..

@Transactional 이해하기@Transactional은 주로 데이터베이스 작업에서 일관성과 무결성을 보장하기 위해 사용되는 어노테이션이다. 이 어노테이션을 메서드나 클래스에 적용하면, 해당 메서드나 클래스 내에서 수행되는 데이터베이스 작업이 하나의 트랜잭션으로 묶인다. 트랜잭션은 여러 개의 데이터베이스 작업을 하나의 단위로 묶어서 실행되는데, 모든 작업이 성공적으로 완료되면 데이터베이스에 반영되고, 만약 하나라도 실패하면 모든 작업을 취소하고 원래 상태로 되돌리게 된다. @Transactional 핵심 개념 (ACID)트랜잭션은 ACID라는 네 가지 특성을 가진다.Atomicity (원자성)트랜잭션 내의 모든 작업은 하나의 단위로 처리된다. 모든 작업이 성공하면 커밋되고, 실패하면 모두 롤백된다..

H2 Database 사용하기H2 Database는 가볍고 빠른 인메모리(In-Memory) 기반의 관계형 데이터베이스이다. 테스트나 개발 환경에서 MySQL 같은 데이터베이스를 대신해서 많이 사용된다. H2 Database는 별도 설치 없이 JAR 파일 하나로 실행이 가능하고 In-Memory 모드 사용 시 성능이 뛰어나 속도가 빠르다. SQL을 지원하기 때문에 표준 SQL 사용 가능하고(MySQL, PostgreSQL과 유사), Spring Boot와 연동이 쉽기 때문에 spring-boot-starter-data-jpa와 함께 사용하면 자동 설정이 가능하다. Spring Boot에 의존성 추가하기build.gradle에 의존성 추가dependencies { implementation 'c..

@Buildeer 이해하기@Builder는 Lombok에서 제공하는 어노테이션으로, 객체를 보다 간편하게 생성할 수 있도록 도와주는 역할을 한다. 특히, 생성자 파라미터가 많을 때 가독성을 높이고, 유연하게 객체를 생성할 수 있다는 특징이 있다. [ @Builder 간단 정리 ]@Builder는 객체를 유연하고 가독성 있게 생성할 수 있도록 도와주는 Lombok 어노테이션생성자 매개변수 순서를 신경 쓰지 않고 명확하게 값 설정 가능@Builder.Default를 사용하면 기본값을 설정할 수도 있음특정 생성자만 @Builder에서 사용할 수도 있음 기본적인 사용법JPA에서 @Entity와 함께 사용할 때는 @NoArgsConstructor도 추가하는 게 좋다.import lombok.Builder;i..