JPA(10)
-
트랜잭션 적용 확인
트랜잭션 적용 확인@Transactional을 통해 선언적 트랜잭션 방식을 사용하면 단순히 애노테이션 하나로 트랜잭션을 적용할 수 있습니다. 이 기능은 트랜잭션 관련 코드가 눈에 보이지 않고 AOP기반으로 동작하기 때문에 실제로 적용이 되는지 안되는지 눈으로 확인하기 어려움이 있습니다. package hello.springtx.apply;import jakarta.transaction.Transactional;import lombok.extern.slf4j.Slf4j;import org.assertj.core.api.Assertions;import org.junit.jupiter.api.Test;import org.springframework.aop.support.AopUtils;import org.sp..
2025.07.24 -
JPQL
JPQL(Java Persistence Query Language)- JPQL은 객체지향 쿼리 언어 입니다. 따라서 테이블을 대상으로 쿼리하는 것이 아니라 엔티티 객체를 대상으로 쿼리한다.- JPQL은 SQL을 추상화해서 특정데이터베이스 SQL에 의존하지 않는다.- JPQL은 결국 SQL로 변환된다. 객체 모델 VS DB 테이블 모델 JPQL 문법-SQL 문법과 거의 유사-SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY - 이러한 방식으로 가능,-엔티티와 속성은 대소문자 구분함.-JPQL 키워드는 대소문가 구분X(SELECT,select)-엔티티의 이름을 사용, 테이블의 이름 사용(X)-별칭은 필수( AS는 생략가능) -> SELECT m FROM Member M (..
2025.06.27 -
객체지향 쿼리 언어
JPA는 다양한 쿼리 방법으로 지원- JPQL, JPA Criteria, QueryDSL, 네이티브 SQL, JDBC API 직접 사용, MyBatis, SpringJdbc Template 함께 사용. JPQL 소개 -JPA를 사용하면 엔티티 객체를 중심으로 개발.-문제는 검색 쿼리-검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색을 해야함.-모든 DB 데이터를 객체로 변환해서 검색하는 것은 절대 불가능-애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL 필요. JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어 제공SQL 문법과 유사(SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN 지원)JPQL은 엔티티 객체를 대상으로 쿼..
2025.06.24 -
Spring JPA 값 타입
JPA의 데이터 타입 분류JPA는 크게 2가지의 타입으로 분류하고 있습니다. 엔티티 타입※@Entity로 정의하는 객체※데이터가 변해도 식별자로 지속해서 추적 가능※예시) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능. 값 타입※int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체※식별자가 없고 값만 있으므로 변경시 추적 불가※예시)숫자 100을 200으로 변경하면 완전히 다른 값으로 대체 값 타입 분류 (크게 3가지로 분류 할 수 있습니다)1.기본값 타입 - 자바 기본 타입(int, double) - 래퍼 클래스(Integer, Long) - String 2.임베디드값 타입(embedded type, 복합 값 타입)3.컬렉션 값 타입(collecti..
2025.06.23 -
HTTP 메서드에서 멱등성이란 무엇일까요?
멱등성이란?※연산은 여러 번 적용하더라도 결과가 달라지지 않는 성질을 멱등성이라고 합니다. HTTP 메서드의 멱등성은 동일한 요청을 한번 보내는 것과 여러번 보내는 것이 서로 동일한 효과를 지니며, 서버의 상태도 동일하게 남을 경우에 멱등하다고 이야기할 수 있습니다. 대표적으료 멱등성을 지닌 메서드는 GET, HEAD, PUT, DELETE, TRACE, OPTIONS가 있습니다. 출처:https://mangkyu.tistory.com/251 [HTTP의 메소드의 멱등성이 필요한 이유]HTTP 멱등성이 필요한 이유는 요청의 재시도 때문입니다. 만약 HTTP 요청이 멱등하다면, 요청이 실패한 경우에 주저없이 재시도 요청을 하면됩니다. 하지만 만약 HTTP 요청이 멱등하지 않다면, 리소스가 이미 처리되었는데..
2025.05.09 -
로그인 구현(Java + JPA + MySQL)
웹 사이트나 홈페이지를 개발하다 보면 로그인 과정을 구현하는 일이 있을 것입니다. 로그인을 어떠한 방식으로 개발할 수 있고 구현할 수 있는 지 코드로 작성해보고자 합니다. 1.로그인 객체를 생성합니다.@Entity@Getter@Setterpublic class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @NotNull private String name; @Column(nullable = false) private String password; private String email; public static User toUser(UserDto userDto)..
2025.02.24