no image
💭Spring Security OAuth2 로그인 구현 - 4월 15일
🧩 전반적인 구조 한눈에 보기 [사용자 로그인 요청(OAuth)] → [SecurityConfig - 설정] ↓Spring이 OAuth2UserService를 호출 ↓[MemberService] → OAuth2 플랫폼에서 사용자 정보 받아옴 ↓[MemberRepository] 통해 DB에서 사용자 찾기 or 회원가입 ↓[Member] 엔티티로 DB 저장 ↓[MemberDetails]로 스프링 시큐리티에 사용자 정보 전달 (인증객체로 사용)이 흐름을 기준으로 생각하면 코드이해가 더 잘된다!!! ✅ 1. ApiController - API 테스트용 컨트롤러@RestControllerpublic class ApiController { @GetMapping("..
2025.04.16
no image
💭Spring Security 정리 - 4월 15일
🛠️ 초기 세팅 📘 1. MemberController.java@Controllerpublic class MemberController { @GetMapping("/signup") public String showSignupForm() { return "signup"; } @GetMapping("/signin") public String showSigninForm() { return "signin"; }}✅ 설명@Controller: 이 클래스가 Spring MVC의 컨트롤러임을 나타냄. 요청을 처리하고 뷰(View)를 반환하는 역할을 한다.@GetMapping("/signup"): /signup 주소로 GET 요청이 들어오면 signup...
2025.04.15
no image
JPA 핵심 메서드 정리
✅ JPA 핵심 메서드 정리메서드설명상태 변화DB반영 시점persist()새 객체를 영속 상태로 전환비영속 → 영속flush/commitfind()ID 기반으로 엔티티 조회없음 (바로 영속 상태 반환)즉시 SQL 실행remove()영속 상태 엔티티 삭제 예약영속 → 삭제 예정flush/commitmerge()준영속/비영속 객체 병합비/준영속 → 영속 (복사본 생성)flush/commitflush()영속성 컨텍스트의 변경 내용을 DB에 반영없음즉시 DB 반영detach()영속성 컨텍스트에서 분리영속 → 준영속해당 객체만 관리 종료clear()전체 영속성 컨텍스트 초기화모든 객체 준영속화모든 객체 관리 종료contains()해당 엔티티가 현재 영속성 컨텍스트에 있는지 확인상태 확인용없음 1️⃣ persis..
2025.04.14
no image
entityManager.persist()란?
✅ entityManager.persist()란?persist()는 비영속 상태의 객체를 영속 상태로 바꾸는 메서드야.JPA에서 객체는 총 4가지 상태 중 하나를 가짐:상태설명비영속 (new)DB랑 아무 관련 없는 순수 자바 객체영속 (managed)JPA가 관리 중인 상태. 1차 캐시에 올라가 있음준영속 (detached)원래 영속 상태였지만 JPA가 더 이상 관리하지 않음삭제 (removed)삭제 예약 상태. flush 시 DB에서 삭제됨 ✅ persist() 호출 흐름Orders order = new Orders(); // 비영속 상태order.setOrderCode("ABC123");entityManager.persist(order); // 여기서부터 영속 상태!이 때 JPA 내부에서는?영속성 ..
2025.04.14
no image
Hibernate실습, JPQL 활용2 - 4월 14일
package io.shi.dao.dao.hibernate;import com.querydsl.jpa.impl.JPAQueryFactory;import io.shi.dao.global.entity.Items;import io.shi.dao.global.entity.OrderItems;import io.shi.dao.global.entity.Orders;import jakarta.persistence.EntityManager;import jakarta.transaction.Transactional;import lombok.RequiredArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Repositor..
2025.04.14
no image
Hibernate실습, JPQL 활용 - 4월 14일
package io.shi.dao.dao.hibernate;import io.shi.dao.dao.mybatis.ItemMapper;import io.shi.dao.global.entity.Items;import jakarta.persistence.EntityManager;import jakarta.persistence.NoResultException;import jakarta.transaction.Transactional;import lombok.RequiredArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Repository;import java.util.List;import java.util...
2025.04.14
no image
Hibernate란 - 4월 11일
Hibernate의 첫 번째 실습은 가장 기초적인 JPA 동작 원리를 이해하는 데 초점이 맞춰져 있다. 주요 학습 목표는 Entity, EntityManager, 영속성 컨텍스트, 트랜잭션, 쓰기 지연, 캐시, 준영속 상태 등을 코드 기반으로 실습해보는것!!!  📁 프로젝트 구조 및 핵심 클래스 소개1. Member 엔티티 클래스package io.shi.domain.eg1;import jakarta.persistence.Entity;import jakarta.persistence.Id;import lombok.*;@Getter@Entity@NoArgsConstructor(access = AccessLevel.PROTECTED)public class Member { @Id private St..
2025.04.11
no image
JPA- 4월 10일
package io.shi.dao.global.entity;import jakarta.persistence.*;import lombok.Builder;import lombok.Getter;import lombok.NoArgsConstructor;import java.time.LocalDateTime;import java.util.Objects;@Getter//@Builder@Entity@Table(name = "items")@NoArgsConstructorpublic class Items { @Id @Column(name = "item_id") @GeneratedValue(strategy = GenerationType.IDENTITY) //주키가 identity 타입으로 주었다 pr..
2025.04.10
no image
Mock란? - 4월 10일
👀전체 코드package io.shi.dao.dao.mybatis;import io.shi.dao.global.entity.Items;import io.shi.dao.util.TestUtils;import lombok.extern.slf4j.Slf4j;import org.junit.jupiter.api.BeforeEach;import org.junit.jupiter.api.DisplayName;import org.junit.jupiter.api.Test;import org.junit.jupiter.api.extension.ExtendWith;import org.mockito.Mock;import org.mockito.junit.jupiter.MockitoExtension;import static org..
2025.04.10