일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- addallattributes()
- 구글
- set
- Login
- ChatGPT
- Polylang
- mergeattributes()
- 인텔리제이
- 플러그인
- GET
- 구글알고리즘
- @Entity
- router
- 구글애널리틱스
- linkedhastset
- Thymeleaf
- 워드프레스
- SEO
- db
- JPA
- @Repository
- GA4
- 리액트오류
- firebase
- @Query
- useEffect
- @Controller
- 데이터베이스
- HttpSession
- post
- Today
- Total
목록2025/02 (63)
개발천재

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 (원자성)트랜잭션 내의 모든 작업은 하나의 단위로 처리된다. 모든 작업이 성공하면 커밋되고, 실패하면 모두 롤백된다..

Stream() 이해하기자바의 Stream은 데이터 컬렉션(예: List, Set, Map 등)을 효율적으로 처리할 수 있도록 도와주는 기능이다.보통 컬렉션을 반복하면서(for 문, foreach) 데이터를 처리하지만, Stream을 사용하면 for 루프를 사용하지 않아도 더 짧고 가독성 좋은 코드로 데이터를 다룰 수 있다. 데이터를 하나씩 처리하는 것이 아니라, 흐름(파이프라인)으로 처리for 문보다 코드가 간결중간 연산(변환)과 최종 연산(출력, 합산 등)을 분리해서 처리원본 데이터를 변경하지 않음(불변성 유지)public class IntArrayTest { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5}..

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..

HttpSession을 이용한 로그인 처리서버가 관리하는 사용자 상태 정보로, 클라이언트가 요청할 때마다 세션 ID를 전달하여 사용자 식별한다. 관리의 주체가 서버이기 때문에 로그인 처리 방식으로 가장 많이 사용되며, 권장되는 방식이다.세션을 이용해서 로그인하는 방식에서 클라이언트는 세션 ID만 전달하고 실제 로그인 정보는 서버에 저장된다. 서버에서 관리하므로 보안성이 높아 비교적 안전하다는 장점이 있다. 또한 다양한 사용자 상태 정보를 관리할 수 있고, 세션 타임아웃 설정으로 보안 기능을 강화할 수 있다.단, 서버 자원을 사용하므로 많은 사용자 관리 시 부하 발생 가능성이 있고, 클라이언트가 세션 ID를 분실하거나 만료되면 재로그인 필요하다.세션에는 유지 시간이 있기 때문에 일정 시간이 지나도 사용자의..