[JPA] 다양한 연관관계 매핑
Back-End/JPA2024. 7. 24. 17:53[JPA] 다양한 연관관계 매핑

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.연관관계 매핑시 고려사항 3가지다중성단방향, 양방향연관관계의 주인 다중성다대일: @ManyToOne일대다: @OneToMany일대일: @OneToOne다대다: @ManyToMany 단방향, 양방향테이블객체외래 키 하나로 양쪽 조인 가능참조용 필드가 있는 쪽으로만 참조 가능방향이라는 개념이 없다.한쪽만 참조하면 단방향 양쪽이 서로 참조하면 양방향 연관 관계의 주인테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음객체 양방향 관계는 A->B, B->A 처럼 참조가 두 방향객체 양방향 관계는 참조가 두 방향이 있음. 둘중 테이블의 외래 키를 관리할 곳을 지정해야 함연관관계의 주인: 외래 키를 관리하는 참조주인의 반..

[JPA] 연관관계 매핑(단방향, 양방향)을 통한 객체 그래프 탐색
Back-End/JPA2024. 7. 17. 00:43[JPA] 연관관계 매핑(단방향, 양방향)을 통한 객체 그래프 탐색

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.객체 지향 프로그래밍(OOP) 패러다임과 관계형 데이터베이스(RDB) 패러다임 간의 불일치는 종종 객체-관계 불일치(O/R Impedance Mismatch)라고 불린다.이는 객체 모델과 관계형 데이터 모델 간의 구조적 차이에서 비롯된다. 이러한 불일치로 인해 양방향 매핑을 구현할 때 다양한 문제와 고려사항이 발생한다. 객체 모델은 상속을 자연스럽게 지원하지만, 관계형 데이터베이스에서는 이를 직접적으로 지원하지 않는다.객체 모델에서는 객체 간의 연관관계를 직접 참조로 표현할 수 있지만, 관계형 데이터베이스에서는 외래 키(Foreign Key)를 사용해 연관관계를 표현해야 한다.객체는 참조 동등성을 사용하지만, 데..

[JPA] 엔티티 매핑(Entity Mapping)
Back-End/JPA2024. 7. 16. 15:08[JPA] 엔티티 매핑(Entity Mapping)

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.데이터베이스 스키마 자동 생성application.propertiesspring.jpa.hibernate.ddl-auto=createspring.jpa.hibernate.ddl-auto=create-dropspring.jpa.hibernate.ddl-auto=updatespring.jpa.hibernate.ddl-auto=validatespring.jpa.hibernate.ddl-auto=nonecreate설명: 기존 테이블을 삭제한 후 다시 생성한다. (DROP + CREATE)사용 예시: 개발 초기 단계에서 데이터베이스 스키마를 자주 변경할 때 사용된다. 기존 데이터를 모두 삭제하고 테이블을 새로 생성하기 때..

[JPA] 영속성 컨텍스트(Persistence Context)
Back-End/JPA2024. 7. 15. 13:53[JPA] 영속성 컨텍스트(Persistence Context)

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.JPA 구동 방식엔티티 매니저 팩토리 (EntityManagerFactory)정의EntityManagerFactory는 JPA 애플리케이션에서 EntityManager 인스턴스를 생성하기 위한 팩토리이다. 특징비용이 많이 드는 객체: 생성하는 데 많은 리소스를 사용하므로 애플리케이션 전체에서 한 번만 생성하고 공유하는 것이 일반적이다.애플리케이션 전체에서 공유: 여러 스레드에서 동시에 사용될 수 있다.생명 주기: 애플리케이션 시작 시 생성되고, 애플리케이션 종료 시 닫힌다. 엔티티 매니저 (EntityManager)정의EntityManager는 엔티티의 생명 주기(Life Cycle)를 관리하고, 데이터베이스 ..

[Spring DB] 트랜잭션 전파 활용
Back-End/Spring2024. 4. 11. 00:42[Spring DB] 트랜잭션 전파 활용

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 예제 프로젝트 더보기 Member @Entity @Getter @Setter public class Member { @Id @GeneratedValue private Long id; private String username; public Member() { } public Member(String username) { this.username = username; } } MemberRepository @Slf4j @Repository @RequiredArgsConstructor public class MemberRepository { private final EntityManager em; @Transacti..

[Spring DB] 트랜잭션 전파
Back-End/Spring2024. 4. 10. 00:33[Spring DB] 트랜잭션 전파

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.기본적인 트랜잭션 커밋, 롤백 application.propertieslogging.level.org.springframework.transaction.interceptor=TRACElogging.level.org.springframework.jdbc.datasource.DataSourceTransactionManager=DEBUG#JPA loglogging.level.org.springframework.orm.jpa.JpaTransactionManager=DEBUGlogging.level.org.hibernate.resource.transaction=DEBUG#JPA SQLlogging.level.org.hib..

[Spring DB] 스프링 트랜잭션의 이해
Back-End/Spring2024. 4. 6. 07:20[Spring DB] 스프링 트랜잭션의 이해

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 2024.03.02 - [Java Category/Spring] - [Spring DB] 트랜잭션 AOP [Spring DB] 트랜잭션 AOP 이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 트랜잭션 AOP(Aspect-Oriented Programming)는 스프링 프레임워크가 트랜잭션 관리를 위해 제공하는 선언적 트 rebugs.tistory.com 위 포스트와 관련있습니다. 트랜잭션 적용 확인 @Transactional 을 통해 선언적 트랜잭션 방식을 사용하면 단순히 애노테이션 하나로 트랜잭션을 적용할 수 있다. 그런데 이 기능은 트랜잭션 관련 코드가 눈에 보..

[Spring DB] MyBatis
Back-End/Spring2024. 4. 3. 00:30[Spring DB] MyBatis

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. MyBatis 소개와 장점 및 단점 MyBatis는 자바(JAVA) 언어로 작성된 오픈 소스 SQL 매핑 프레임워크이다. JDBC(Java Database Connectivity) 위에 구축되어 데이터베이스와의 상호작용을 추상화하며, 개발자가 SQL 문을 직접 제어할 수 있게 해주는 특징을 가진다. 이는 개발자가 객체와 SQL 문 사이의 매핑을 설정하여, 데이터베이스 작업을 더 쉽고 직관적으로 할 수 있게 돕는다. MyBatis의 주요 기능 SQL 분리: MyBatis는 SQL을 자바 코드에서 분리하여 XML 파일이나 어노테이션에 작성하도록 한다. 이로써, SQL 관리가 용이하고 가독성이 높아진다. 동적 SQL..

image