Jinsu's Technical Blog
  • 홈
  • 태그
  • 방명록
  • 메뉴 닫기
  • 글작성
  • 방명록
  • 환경설정
    • 분류 전체보기 (250)
      • Java (18)
      • Spring Framework (33)
        • Toby's Spring 3.1 (6)
        • Spring IoC (6)
        • TDD (6)
        • Reflection (6)
        • AOP (6)
      • Spring Boot (11)
      • Spring Security (22)
      • Database (17)
        • Mysql (2)
        • JDBC (2)
        • JPA (13)
      • Build and Development Tools (3)
        • Maven (1)
        • Gradle (1)
        • Lombok (1)
      • Network (12)
      • Apache Tomcat (11)
      • Microservices Architecture (33)
      • Linux (9)
      • React (10)
      • Docker (22)
      • OAuth (10)
      • DevOps (2)
      • Git (2)
      • HTML (1)
      • CSS (1)
      • JavaScript (1)
      • Problem and Solution Guide (8)
        • Java (1)
        • Spring Framework (4)
        • Reflection (1)
        • Dynamic Proxy (1)
        • JPA (1)
      • Note-Taking (23)
  • 홈
  • 태그
  • 방명록
Note-Taking

JPA 어노테이션의 핵심 정리

1. @Entity  • 설명: JPA에서 관리하는 엔티티 클래스임을 선언. 이 클래스는 데이터베이스의 테이블에 대응돼. • 사용 예시:@Entitypublic class Member { @Id private Long id; private String name;} 2. @Id  • 설명: 해당 필드를 **기본 키(Primary Key)**로 지정. • 사용 예시:@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id; 3. @GeneratedValue  • 설명: 기본 키 생성 전략을 지정. AUTO, IDENTITY, SEQUENCE, TABLE이 사용될 수 있어. • AUTO: JPA가 자동으로 선택 • IDENTI..

2024. 9. 20. 09:49
Database/JPA

JPA 값 타입으로 객체 모델링을 유연하게 설계하는 방법

JPA에서의 값 타입은 데이터베이스의 단일 값이나 복합 값을 표현하는 타입으로, 엔티티와는 다른 특성을 가지고 있어. 값 타입은 주로 엔티티의 속성(필드)을 정의할 때 사용되며, 객체의 생명 주기를 엔티티에 종속시킨다는 특징이 있어. JPA에서 값 타입은 크게 기본값 타입과 임베디드(복합) 값 타입으로 나눌 수 있어. 1. 기본값 타입 기본값 타입은 자바의 기본 데이터 타입(int, double, String 등)과 JPA가 제공하는 타입을 말해. 이 값들은 데이터베이스 테이블에서 하나의 컬럼에 대응하고, 보통 복사(by value) 방식으로 처리돼. 기본 타입은 엔티티와 달리 생명 주기를 따로 관리하지 않고, 엔티티에 종속돼 있어. 예시:@Entitypublic class User { @Id ..

2024. 9. 19. 12:43
Note-Taking

체이닝 메서드와 빌더 패턴을 활용한 자바 객체 관리 정리

**체이닝 메서드(Method Chaining)**란, 객체의 메서드를 호출할 때 연속적으로 호출할 수 있는 프로그래밍 패턴을 의미해. 즉, 하나의 메서드가 객체를 반환하고, 그 반환된 객체에 다시 메서드를 호출하는 방식으로 메서드 호출을 연결(chain)하는 것처럼 작성하는 방법이야. 이 방식은 코드의 가독성과 간결성을 높여주며, 연속적인 작업을 한 줄로 처리할 수 있어. 일반적으로, 각 메서드는 자신을 호출한 객체를 반환(return this)하기 때문에, 연속적인 호출이 가능해져. 예시:public class Person { private String name; private int age; public Person setName(String name) { this.na..

2024. 9. 19. 10:34
Build and Development Tools/Lombok

Lombok: 자바 개발을 더 간결하게 만드는 필수 도구

Lombok롬복 (Lombok)은 자바 (Java) 프로그래밍 언어를 사용하는 개발자들을 위한 플러그인 라이브러리입니다. 롬복은 반복적이고 장황한 코드를 줄여주고, 자동으로 코드를 생성하여 개발자의 생산성을 향상시켜주는 데 도움을 줍니다. 롬복은 Java 언어의 불필요한 보일러플레이트 코드를 최소화하고, 코드를 간결하게 작성할 수 있게 해줍니다. 다음은 롬복의 주요 기능과 개념에 대한 상세 설명입니다: 1. 애노테이션 (Annotations): 롬복은 Java 애노테이션을 사용하여 코드를 자동으로 생성하거나 수정합니다. 롬복 애노테이션은 개발자가 작성한 클래스나 메서드에 적용됩니다. 2. Getter 및 Setter 메서드 생성: 롬복을 사용하면 클래스의 필드에 대한 Getter와 Setter 메서드를 ..

2024. 9. 19. 10:26
Database/JPA

JPA 고급 상속 매핑 전략: 단일 테이블, 조인 테이블, 테이블당 클래스 비교와 활용

JPA에서 상속관계 매핑은 객체 지향 프로그래밍의 상속 개념을 데이터베이스 테이블에 매핑하는 방법을 말해. JPA는 상속 관계를 데이터베이스에 매핑할 때 세 가지 전략을 제공해: 단일 테이블 전략(Single Table Strategy), 조인드 테이블 전략(Joined Table Strategy), 그리고 테이블당 클래스 전략(Table per Class Strategy). 이 세 가지 각각에 대해 자세하고 쉽게 설명해줄게. 1. 단일 테이블 전략 (Single Table Strategy) 단일 테이블 전략은 부모 클래스와 자식 클래스의 모든 속성을 하나의 테이블에 저장하는 방식이야. 즉, 상속 구조에 있는 모든 엔티티가 하나의 테이블에 들어가고, 각 행에는 어떤 클래스에서 온 데이터인지 구분하는 컬럼..

2024. 9. 13. 16:06
Database/JPA

JPA 연관관계와 복합 키

JPA에서 Collection 타입의 필드가 별도의 테이블로 생성되는 이유는, RDBMS에서는 컬렉션을 직접 저장할 수 없기 때문이야. 객체 지향 프로그래밍에서는 리스트, 셋 등의 컬렉션 필드를 쉽게 정의하고 사용할 수 있지만, 관계형 데이터베이스에서는 이를 테이블 구조로 풀어서 저장해야 해. JPA는 이를 해결하기 위해 **@ElementCollection**을 사용하여 컬렉션 데이터를 별도의 테이블에 매핑하는 방식을 제공해. 왜 별도 테이블이 필요한가?  1. 1:N 관계 표현: 데이터베이스에서는 1개의 엔티티가 여러 개의 값을 가질 수 있는 컬렉션 필드를 관리할 수 있는 방식이 없어. 이를 해결하기 위해 JPA는 컬렉션 필드를 별도의 테이블로 분리해서 여러 값을 저장해. 2. 값 타입(Value T..

2024. 9. 13. 12:21
Database/JPA

JPA의 단방향, 양방향 연관관계와 Cascade 이해하기

JPA에서의 연관관계: 단방향과 양방향 JPA에서 엔티티 간의 연관관계는 크게 단방향과 양방향으로 나뉘어. 이는 객체 간의 참조를 어떻게 설정하는지에 따라 구분돼. 또한, 연관관계는 일대일(1:1), 일대다(1:N), 다대일(N:1), **다대다(N:M)**로 나눌 수 있어. 각각의 경우를 단방향과 양방향으로 나누어 설명해줄게. 1. 단방향 연관관계 단방향 연관관계에서는 한쪽 엔티티만 다른 엔티티를 참조해. 즉, 객체 간의 관계가 한쪽으로만 연결돼 있는 경우야. 예시: 다대일(N:1) 단방향  • 상황: 여러 명의 학생이 한 명의 선생님에게 속해 있는 경우 (학생:선생님 = N:1). • 설명: 학생(Student) 엔티티는 선생님(Teacher) 엔티티를 참조하지만, 선생님은 학생을 참조하지 않아.@E..

2024. 9. 13. 10:37
Note-Taking

JPA 연관관계와 지연 로딩 정리

JPA에서 연관관계는 쉽게 말해 하나의 엔티티가 다른 엔티티와 어떻게 연결되어 있는지를 의미해. 객체 지향 프로그래밍에서는 클래스들 간에 서로 참조를 통해 관계를 맺고 데이터를 주고받을 수 있는데, 이런 관계를 데이터베이스에서는 **테이블 간의 외래 키(Foreign Key)**를 통해 표현해. 즉, 연관관계란 두 엔티티 간의 관계를 정의하고, 이를 데이터베이스 상에서 테이블 간의 연결로 표현하는 것을 말해. JPA를 사용하면, 이러한 관계를 객체 간의 참조처럼 쉽게 사용할 수 있게 만들어줘. 쉽게 정리하면:  • 연관관계 = 엔티티 간의 관계. • JPA에서는 객체 간의 관계(참조)를 데이터베이스의 외래 키로 관리해, 마치 객체 간의 연결을 처리하는 것처럼 데이터베이스 상에서도 쉽게 다룰 수 있어. 예..

2024. 9. 11. 17:23
Database/JPA

객체 간 관계를 완벽히 이해하는 JPA 연관관계 매핑

연관관계 매핑(Association Mapping)은 JPA에서 객체 지향 프로그래밍과 데이터베이스의 관계형 모델을 매핑하는 핵심 개념 중 하나야. 객체 간의 관계를 데이터베이스 테이블 간의 외래 키(Foreign Key) 관계로 변환해, 테이블 간의 데이터를 쉽게 조작할 수 있어. 이 개념을 이해하려면, 객체 지향 세계와 데이터베이스 세계가 어떻게 서로 다른지를 알아야 해:  • 객체 지향 프로그래밍에서는 클래스 간의 관계를 직접 참조하고, 객체는 서로 다른 객체와 연결돼. • 데이터베이스에서는 외래 키를 통해 테이블 간의 관계를 정의해. 이 두 세계가 어떻게 연관관계 매핑을 통해 연결되는지 자세히 설명해볼게. 1. 연관관계의 종류 연관관계는 크게 네 가지로 나눌 수 있어:  1. 일대일(One-to-..

2024. 9. 11. 11:07
Database/Mysql

데이터베이스 조인(SQL JOIN) 한눈에 보기: INNER, LEFT, RIGHT OUTER

📚 INNER JOIN 쉽게 이해하기 🔍 INNER JOIN이란? INNER JOIN은 두 테이블에서 공통된 데이터를 가져오는 방식이야. 조인 조건을 만족하는 두 테이블의 데이터만 결과에 포함돼. 조인 조건을 만족하지 않는 데이터는 결과에서 제외되기 때문에, 두 테이블의 교집합처럼 동작한다고 생각하면 돼. 🏫 학생과 도서 대출 기록 예시로 설명 테이블 구조:  • 학생 테이블(student): 학생들의 정보를 담고 있음 (학생 ID, 이름 등). • 도서 대출 기록 테이블(book): 책을 빌린 기록을 담고 있음 (대출한 책의 정보, 대출 날짜, 학생 ID). INNER JOIN을 적용한 경우: 학생이 책을 빌린 경우에만 그 학생의 정보와 대출 기록이 결과에 포함돼. 즉, 학생 정보와 대출 기록이 ..

2024. 9. 11. 10:41
Database/JPA

JPA 기본 키 생성 전략: IDENTITY, SEQUENCE, TABLE과 allocationSize의 이해

hibernate.hbm2ddl.auto는 Hibernate에서 데이터베이스 테이블과의 매핑을 자동으로 처리하는 설정 값이야. 이 속성은 애플리케이션이 실행될 때 Hibernate가 데이터베이스 스키마를 어떻게 처리할지 결정해 줘. 주로 다음과 같은 값들을 사용할 수 있어:  1. none (또는 빈 값): Hibernate가 아무것도 하지 않음. 데이터베이스 스키마에 영향을 미치지 않아. 2. validate: 애플리케이션 실행 시 Hibernate가 엔티티 클래스와 데이터베이스 테이블의 구조가 일치하는지 확인해. 일치하지 않으면 예외를 던져. 스키마를 수정하지 않아. 3. update: 데이터베이스에 존재하는 테이블을 엔티티 클래스에 맞게 업데이트해. 테이블이 없으면 생성하고, 변경된 컬럼이 있으면 ..

2024. 9. 10. 15:55
Database/JPA

QueryDSL로 JPA 쿼리 쉽게 작성하기

QueryDSL는 Java 애플리케이션에서 타입 안전한 동적 쿼리를 작성할 수 있도록 도와주는 프레임워크야. 주로 JPA, SQL, MongoDB, Lucene 등의 데이터 소스와 함께 사용되며, 복잡한 쿼리를 작성할 때 타입 오류를 컴파일 타임에 발견할 수 있도록 해줘. QueryDSL의 주요 특징  1. 타입 안전 쿼리:QueryDSL은 쿼리를 자바 코드로 작성하므로, SQL처럼 문자열로 쿼리를 작성할 때 발생할 수 있는 오타나 오류를 컴파일 타임에 잡아낼 수 있어. 이런 점에서 동적 쿼리를 작성할 때 매우 유용해. 2. 다양한 데이터 소스 지원:QueryDSL은 JPA뿐만 아니라 SQL, MongoDB, Lucene 등 여러 데이터베이스와 검색 엔진에 대해 타입 안전한 쿼리를 지원해. 이로 인해 다..

2024. 9. 10. 12:41
Database/JPA

JPA 엔티티 관리 메서드

JPA에서 엔티티 매니저(EntityManager)를 통해 사용할 수 있는 메서드들은 다양한 상태와 작업을 지원해. 각 메서드는 엔티티를 영속성 컨텍스트와 데이터베이스 사이에서 어떻게 관리하고 처리할지를 정의하는 중요한 기능을 제공해. 주요 메서드들을 설명하자면:  1. persist(Object entity): • 엔티티를 영속성 컨텍스트에 저장하는 메서드. 이 메서드를 호출하면 엔티티가 영속성 컨텍스트에 저장되고, 이후에 데이터베이스에 반영될 준비가 돼. • 그러나 쿼리가 즉시 실행되는 건 아니고, flush() 또는 트랜잭션이 커밋될 때 쿼리가 실행돼. 2. flush(): • 영속성 컨텍스트에 있는 엔티티들의 변경 사항을 즉시 데이터베이스에 반영하는 메서드. 즉, 영속성 컨텍스트에서 관리하는 엔티..

2024. 9. 10. 11:42
Database/JPA

JPA 영속성 컨텍스트 완벽 이해: persist, flush, 그리고 엔티티 관리의 차이점

영속 컨텍스트(Persistence Context)는 JPA에서 매우 중요한 개념이야. 간단히 말해, **엔티티(Entity)**를 데이터베이스에서 가져오거나 저장할 때, 이를 관리하는 일종의 캐시 같은 공간이야. 주요 특징  1. 엔티티 생명주기 관리영속 컨텍스트는 엔티티의 생명 주기를 관리해. 예를 들어, JPA에서 EntityManager를 사용해 데이터를 조회하면 그 엔티티는 영속 컨텍스트에 저장돼. 그 후 같은 트랜잭션 안에서 동일한 엔티티를 조회하면, 데이터베이스를 다시 조회하지 않고 영속 컨텍스트에 저장된 엔티티를 반환해. 2. 변경 감지 (Dirty Checking)엔티티의 상태가 변경되면, 영속 컨텍스트가 이를 감지하고 자동으로 데이터베이스에 반영해. 트랜잭션이 끝날 때 commit을 호..

2024. 9. 10. 11:01
Database/JPA

스프링 프레임워크 심화: JDBC와 JPA의 차이 및 ORM 활용법

JDBC 소개 (Java Database Connectivity) **JDBC(Java Database Connectivity)**는 자바에서 데이터베이스와 상호작용하기 위한 표준 API입니다. JDBC를 통해 자바 애플리케이션은 데이터베이스에 SQL 쿼리를 실행하고, 데이터를 가져오고, 업데이트하는 등의 작업을 할 수 있습니다. 이 API는 데이터베이스의 세부 사항에 대해 걱정할 필요 없이 다양한 DB 시스템과의 연결을 쉽게 처리할 수 있도록 도와줍니다. JDBC의 주요 개념과 구성 요소  1. JDBC 드라이버:JDBC 드라이버는 자바 애플리케이션과 데이터베이스 사이에서 번역기 역할을 합니다. 자바의 API 호출을 데이터베이스가 이해할 수 있는 명령으로 변환합니다. JDBC 드라이버는 네 가지 유형이..

2024. 9. 9. 14:52
  • «
  • 1
  • ···
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • ···
  • 17
  • »

공지사항

  • Jinsu's GitHub

전체 카테고리

  • 분류 전체보기 (250)
    • Java (18)
    • Spring Framework (33)
      • Toby's Spring 3.1 (6)
      • Spring IoC (6)
      • TDD (6)
      • Reflection (6)
      • AOP (6)
    • Spring Boot (11)
    • Spring Security (22)
    • Database (17)
      • Mysql (2)
      • JDBC (2)
      • JPA (13)
    • Build and Development Tools (3)
      • Maven (1)
      • Gradle (1)
      • Lombok (1)
    • Network (12)
    • Apache Tomcat (11)
    • Microservices Architecture (33)
    • Linux (9)
    • React (10)
    • Docker (22)
    • OAuth (10)
    • DevOps (2)
    • Git (2)
    • HTML (1)
    • CSS (1)
    • JavaScript (1)
    • Problem and Solution Guide (8)
      • Java (1)
      • Spring Framework (4)
      • Reflection (1)
      • Dynamic Proxy (1)
      • JPA (1)
    • Note-Taking (23)

블로그 인기글

전체 방문자

오늘
어제
전체
Powered by Privatenote Copyright © Jinsu's Technical Blog All rights reserved. TistoryWhaleSkin3.4

티스토리툴바