분류 전체보기41 JPA 학습목록 📝 GPT에게 물어본 질문 목록1) 연관관계 매핑 (1:N vs N:1)JPA 에서 N대1은 테이블에서 자식테이블에 FK가 있듯이 객체관에 관계에서도 N 쪽이 연관관계의 주인을 가져가잖아반면에 1대N은 연관관계의 주인을 1쪽이 가져가잖아 (ex. TEAM, MEMBER)굳이 이렇게 하는 이유가 있을까?@OneToMany @JoinColumn(name="TEAM_ID") List members = new ArrayList(); 2) mappedBy 가 필요한 이유JPA 객체간의 양방향 처리를 할때 (객체 : MEMBER, TEAM)@OneToMany(mappedBy="team") 이렇게 처리를 해주잖아 왜 해주는거지?안해주면 생기는 문제가 뭐야?어차피 연관관계 메서드로 동기화처리 해주잖아./* 연관관계 .. JPA 2024. 12. 21. JPA에서 단방향 매핑을 우선으로 하는 이유 (단방향 → 필요시 양방향) 📝 JPA 단방향 매핑과 양방향 매핑왜 단방향 매핑을 우선적으로 사용하는가?단순성과 유지보수성단방향 매핑은 코드를 단순하게 만들고 유지보수를 용이하게 합니다.양방향 매핑은 객체 간의 관계를 양쪽에서 관리해야 하므로 복잡도가 증가합니다.성능단방향 매핑은 필요 없는 추가 쿼리 생성을 방지합니다.양방향 매핑은 잘못 사용할 경우 예상치 못한 SELECT나 UPDATE 쿼리가 발생할 수 있습니다.연관관계의 복잡성양방향 매핑은 두 객체 간의 관계를 양쪽에서 동기화해야 하므로 연관관계 편의 메서드를 잘못 작성하거나 누락하면 데이터 불일치가 발생할 수 있습니다.단방향 매핑과 양방향 매핑의 차이1. 단방향 매핑 (추천)@Entitypublic class Member { @Id @GeneratedValue p.. JPA 2024. 12. 9. JPA 엔티티 양방향 관계에서 연관관계 주인이 필요한 이유 📝 JPA 연관 관계의 주인 11. 문제 상황: 양방향 관계에서 외래 키 관리 충돌예제 설계Team과 Member는 양방향 관계로 설계되어 있습니다.Team은 여러 Member를 가질 수 있으며, Member는 하나의 Team에 속합니다.데이터베이스에서는 Member 테이블에 TEAM_ID라는 외래 키가 존재합니다.문제 코드@Entitypublic class Team { @Id @GeneratedValue private Long id; @OneToMany @JoinColumn(name = "TEAM_ID") // Team도 외래 키를 관리하려고 시도 private List members = new ArrayList();}@Entitypublic class Member {.. JPA 2024. 12. 9. JPA 엔티티의 객체지향적 설계 package jpashop.jpaorder.domain;import javax.persistence.*;import java.time.LocalDateTime;@Entity@Table(name = "ORDERS")public class Order { @Id @GeneratedValue @Column(name = "ORDER_ID") private Long id; @Column(name = "MEMBER_ID") private Long memberId; private LocalDateTime orderDate; @Enumerated(EnumType.STRING) private OrderStatus orderStatus;} ❓ 이런 방식의 설계는 객체지향스럽지 않다 RDB에 맞춘 설계이다 객.. JPA 2024. 12. 9. JPA PK 생성전략 @GeneratedValue(strategy = GenerationType.❓) 📝 JPA GenerationType 비교1. GenerationType.IDENTITY특징: 데이터베이스에 의존하여 기본 키를 생성합니다.동작 방식:PK는 데이터베이스에서 AUTO_INCREMENT 또는 IDENTITY 컬럼으로 생성됩니다.em.persist() 호출 시 즉시 INSERT 쿼리를 실행하고, 데이터베이스가 생성한 키 값을 가져옵니다.장점: 설정이 간단하며, 데이터베이스의 ID 생성 기능을 그대로 활용.단점:PK가 INSERT 이후에 결정되므로, 다른 엔티티와 연관 관계를 처리할 때 비효율적.INSERT 지연이 불가능.추천 상황: 데이터베이스에 ID 생성 위임이 필요할 때.2. GenerationType.SEQUENCE특징: 데이터베이스의 시퀀스 객체를 사용하여 PK를 생성.동작 방식:J.. JPA 2024. 12. 9. 자바 enum 📝 자바 Enum 상세 설명 및 활용 예제enum은 자바에서 열거형 데이터 타입으로, 서로 관련 있는 상수들의 집합을 표현하는 데 사용됩니다. 타입 안전성을 보장하며, 추가 필드와 메서드를 가질 수 있어 매우 유용합니다.1. 기본 구조public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;} 2. 특징타입 안전성 보장: 특정 enum 값만 사용할 수 있도록 제한.가독성 향상: 코드의 의미를 명확하게 전달.Switch 문에서 사용 가능: 가독성과 유지 보수성을 높임.메서드와 필드 정의 가능: 추가적인 데이터와 동작을 포함 가능.Singleton 패턴 유사성: enum 값은 JVM에서 하나의 인스턴스로만 존.. Java 2024. 12. 9. 자바 리플렉션 📝 Java ReflectionJava Reflection은 런타임(Run-time)에 클래스, 메서드, 필드 등의 정보를 동적으로 탐색하고 조작할 수 있는 기능을 제공하는 Java API입니다. 즉, 코드 실행 중에 클래스의 구조를 검사하거나 조작할 수 있습니다.리플렉션은 java.lang.reflect 패키지와 java.lang.Class 클래스를 통해 제공됩니다.1. 리플렉션의 주요 기능클래스 정보 조회: 클래스 이름, 패키지 이름, 부모 클래스, 구현 인터페이스 등의 정보를 확인할 수 있습니다.필드(Field) 조회 및 수정: 클래스의 멤버 변수를 동적으로 읽고 수정할 수 있습니다.메서드(Method) 호출: 클래스의 메서드를 동적으로 호출할 수 있습니다.생성자(Constructor) 호출: 클.. Java 2024. 12. 7. JPA EntityManagerFactory, EntityManager는 사용 후 꼭 닫아야 한다 📝 JPA 리소스 누수란 무엇인가?프로그래밍에서 "누수"란, 사용된 리소스가 적절히 해제되지 않고 계속 점유되는 상태를 의미합니다. 이는 메모리, 파일 핸들, 데이터베이스 연결 등의 리소스가 반환되지 않아 시스템 성능에 영향을 미칠 수 있습니다.1. JPA에서의 리소스 누수란?EntityManager와 EntityManagerFactory의 역할EntityManager:데이터베이스와의 세션 역할을 수행하며, 영속성 컨텍스트(Persistence Context)를 관리.애플리케이션에서 데이터베이스 작업을 수행할 때마다 생성 및 종료해야 함.EntityManagerFactory:EntityManager를 생성하는 데 사용되는 고비용 객체.데이터베이스 연결 풀과 같은 리소스를 관리하므로 애플리케이션 종료 시.. JPA 2024. 12. 5. JPA 구동방식 📝 JPA 구동 방식JPA의 구동 방식은 Persistence → EntityManagerFactory → EntityManager의 계층적 구조를 따릅니다. 주요 클래스와 구동 방식을 단계별로 설명합니다.1. JPA의 주요 클래스 및 역할Persistence:JPA 표준에서 제공하는 유틸리티 클래스.META-INF/persistence.xml 파일을 읽어 EntityManagerFactory를 생성하는 역할.EntityManagerFactory:EntityManager를 생성하기 위한 팩토리 클래스.데이터베이스와의 연결 정보를 포함하며 애플리케이션 전반에서 공유 가능.EntityManager:데이터베이스와의 실제 상호작용(삽입, 조회, 수정, 삭제 등)을 처리.영속성 컨텍스트(Persistence C.. JPA 2024. 12. 5. hibernate entitymanager 의존성 📝 Hibernate EntityManager란?Hibernate EntityManager는 Hibernate 프레임워크에서 JPA(Java Persistence API)의 핵심 클래스인 EntityManager를 구현하는 라이브러리입니다. 이를 통해 Hibernate는 JPA 표준을 따르는 ORM(Object-Relational Mapping) 도구로 사용할 수 있습니다.1. EntityManager란?EntityManager는 JPA(Java Persistence API)에서 제공하는 주요 인터페이스로, 데이터베이스 작업(삽입, 조회, 수정, 삭제)을 수행하는 역할을 합니다.주요 기능:엔티티의 영속성 관리: 엔티티 객체를 데이터베이스에 저장하거나 삭제. 엔티티 객체와 데이터베이스 간의 상태 동기화... JPA 2024. 12. 5. JDBC Driver은 Java Application과 DB의 중간다리 역할을 한다. 📝 JDBC 드라이버란 무엇인가?JDBC 드라이버는 Java 애플리케이션이 데이터베이스와 상호작용할 수 있도록 돕는 중간 다리 역할을 합니다.1. JDBC란 무엇인가?JDBC(Java Database Connectivity)는 Java에서 데이터베이스와 상호작용하기 위한 표준 API입니다. Java 애플리케이션은 JDBC API를 사용하여 데이터베이스에 명령(SQL)을 보내고, 결과를 처리할 수 있습니다.하지만 JDBC API는 표준 인터페이스이기 때문에, 실제로 데이터베이스와 통신하려면 각 데이터베이스에 맞는 구체적인 구현(드라이버)이 필요합니다. 이를 JDBC 드라이버가 담당합니다.2. JDBC 드라이버의 역할JDBC 드라이버는 Java 애플리케이션과 특정 데이터베이스 간의 통신을 가능하게 하는 구.. DB & SQL 2024. 12. 5. HandlerMapping & RequestMapping 📝 HandlerMapping & RequestMapping1. HandlerMappingHandlerMapping은 Spring MVC의 요청 처리 흐름에서 요청 URL을 적절한 컨트롤러(Handler)로 매핑하는 역할을 담당합니다.HandlerMapping의 역할클라이언트로부터 들어온 HTTP 요청 URL을 기반으로 어떤 컨트롤러 메서드를 호출할지 결정.Spring MVC가 제공하는 다양한 HandlerMapping 구현체 중 하나를 사용하여 URL과 컨트롤러를 연결.HandlerMapping의 구현체RequestMappingHandlerMapping: 애노테이션 기반의 매핑을 처리.SimpleUrlHandlerMapping: XML 또는 Java 설정 파일을 통해 매핑 정의.BeanNameUrlH.. spring 2024. 12. 2. 이전 1 2 3 4 다음