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
no image
Mock이란? - 4월9일
🔍 1. Mock이란?✅ Mock은 "가짜 객체"를 말해실제 의존 객체(여기선 ItemMapper)를 진짜로 실행하지 않고도,테스트하고 싶은 코드(MyBatisItemRepository)만 단위로 따로 떼서 테스트할 수 있도록 도와주는 가짜 객체야. package io.shi.dao.dao.mybatis;import io.shi.dao.global.entity.Items;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.E..
2025.04.10
no image
MyBatis란?
MyBatis는 SQL을 XML이나 어노테이션으로 분리해서 깔끔하게 관리할 수 있는 SQL Mapper 프레임워크야. JPA처럼 객체-테이블 매핑은 직접 안 해주지만, SQL을 내가 원하는 대로 컨트롤할 수 있다는 장점이 있어. ✅ MyBatis 기본 개념요소설명Mapper XMLSQL이 정의된 XML 파일Mapper InterfaceXML에서 정의한 SQL을 호출하는 인터페이스SqlSessionFactoryMyBatis 설정을 읽고 SqlSession을 만드는 팩토리SqlSession실제 SQL 실행을 담당하는 객체  🔧 1. 기본 설정하기 (build.gradle)dependencies { implementation 'org.mybatis.spring.boot:mybatis-spring-boo..
2025.04.09
no image
🌟 트랜잭션(Transaction) 이란?
JDBC를 사용해서 트랜잭션을 직접 다루는 예제고, Spring의 PlatformTransactionManager를 사용해서 명시적으로 트랜잭션을 시작하고 커밋 또는 롤백하는 흐름을 보여줘. 전체적으로 트랜잭션이란 무엇인지, 그리고 SimpleJdbcService, SimpleJdbcCrudTransactionRepository, 그리고 TransactionTests가 어떻게 서로 연결되는지 순서대로 자세하게 설명해보도록 하겠다!💡 트랜잭션이란?트랜잭션(Transaction)은 데이터베이스에서 하나의 작업 단위야. 예를 들어 사용자가 은행 계좌에서 돈을 이체할 때,A 계좌에서 돈을 빼고B 계좌에 돈을 넣는다이 두 작업이 모두 성공해야만 데이터베이스에 반영되고, 하나라도 실패하면 둘 다 롤백되어야 해. ..
2025.04.09
no image
JDBC를 이용한 간단한 CRUD 구현
JDBC(Java Database Connectivity)를 사용하여 데이터베이스 CRUD(Create, Read, Update, Delete) 작업을 수행하는 예제 🧩 1. SimpleCrudRepository 인터페이스public interface SimpleCrudRepository { Member save(Member member) throws SQLException; Optional findById(Integer id) throws SQLException; void update(Member member) throws SQLException; void remove(Integer id) throws SQLException;}✅ 설명 DB에 접근해 CRUD를 수행하는 기능을 인..
2025.04.08
no image
@GeneratedValue란?
📌 @GeneratedValue란?@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@GeneratedValue는 기본 키(PK) 값을 자동으로 생성해주는 어노테이션이야.주로 @Id와 함께 사용돼.DB마다 기본 키 생성 방식이 다르기 때문에, 전략(strategy) 을 지정할 수 있어.  🧩 사용 목적우리가 엔티티를 저장할 때마다 id를 일일이 지정하지 않아도, JPA가 알아서 적절한 값을 생성해서 넣어줘. → Insert할 때 PK를 자동으로 생성해주는 것! 🏷️ 주요 전략 4가지 (strategy)전략 이름설명사용되는 DBIDENTITYDB의 auto_increment 사용MySQL, MariaDBSEQUENCEDB의 s..
2025.04.07
no image
🌿 Spring Data JPA - 매핑 어노테이션 정리
📌 1. 객체와 테이블 매핑@Entity이 클래스가 JPA가 관리하는 엔티티 클래스임을 선언함.실제 데이터베이스 테이블과 매핑됨.@Table(name = "table_name") (선택)엔티티와 매핑될 테이블 이름을 지정. 생략하면 클래스 이름과 동일한 테이블로 자동 매핑됨.@Entity@Table(name = "posts") // posts 테이블과 매핑public class Post { ...}  📌 2. 기본 키 매핑@Id기본 키(primary key)를 지정하는 어노테이션. 반드시 필요함!@GeneratedValue(strategy = GenerationType.IDENTITY)기본 키의 자동 생성 전략을 지정함. 대표적인 전략:IDENTITY: DB에서 자동 증가 (MySQL의 auto..
2025.04.07