본문 바로가기

개인 공부89

자바 ORM 표준 JPA 프로그래밍 : 연관관계 매핑 기초 (5장) 📌 단방향 연관관계 회원과 팀의 관계를 통해서 객체와 테이블의 차이를 보면 다음과 같다. 객체 : 단방향 관계이다. 회원은 Team 필드를 통해서 팀을 알 수 있지만, 반대로 팀은 알 수 없다. 테이블 : 양방향 관계이다. 외래 키를 통해서 서로 JOIN 할 수 있다. 참조를 통한 연관관계는 항상 단방향이다. 양방향으로 만들고 싶으면 반대쪽에서도 필드를 추가해 참조를 보관해야 한다. 하지만 이건 서로 다른 단방향 관계 2개이다. 테이블과 다르게 외래 키 하나로 양방향으로 JOIN 할 수 없다. 1️⃣ 순수한 객체 연관관계 참조를 통해서 연관관계를 탐색하는 것을 객체 그래프 탐색이라고 한다. 2️⃣ 테이블 연관관계 데이터베이스의 외래 키를 사용해서 연관관계를 탐색하는 것을 조인이라고 한다. 3️⃣ 객체 관.. 2022. 11. 18.
자바 ORM 표준 JPA 프로그래밍 : 엔티티 매핑 (4장) 🌀Entity 이 어노테이션을 붙이면 JPA가 해당 클래스를 테이블과 매핑시켜 관리한다. JPA 관리하에 놓인 클래스를 엔티티라 부른다. 🧷 속성 name : 엔티티의 이름. 디폴트는 클래스 명, 다른 패키지의 엔티티 클래스와 겹치지 않아야 한다. 🧷 주의사항 기본 생성자 : JPA는 엔티티 객체를 생성할 때 기본 생성자를 사용한다. final 클래스, enum, interface, inner 클래스에 사용할 수 없다. 저장할 필드에 final을 사용하면 안 된다. 🌀Table 엔티티와 매핑할 테이블을 지정한다. 🧷 속성 name : 매핑할 테이블 이름. 디폴트는 엔티티 이름 catalog : 데이터베이스에서 catalog를 매핑 schema : 데이터베이스에서 schema를 매핑 uniqueConstr.. 2022. 10. 6.
TIL : @Modifying, Junit5 (13) 🌞 Spring 1️⃣ @Modifying 어노테이션 @Query 어노테이션을 통해 작성된 DML문(select 제외)을 사용할 때 붙이는 어노테이션이다. JpaRepository가 제공하는 기본적인 메서드 혹은 메서드 네이밍 쿼리에는 적용되지 않는다! 2️⃣ JPQL 쿼리 (짧) JPQL 쿼리로 검색 조건 처리 시 좀 어려울 수 있지만 count에 대한 처리가 쉽다, fetchCount()...! ✍️ Junit5 1️⃣ 기본 Annotation 🌀BeforeAll / 🌀AfterAll : 모든 테스트보다 이전/이후에 실행, static 메서드만. 🌀BeforeEach / 🌀AfterEach : 각 테스트 전/후에 실행 🌀DisplayName("테스트 임당") : 테스트 이름 정하기 🌀Disable :.. 2022. 9. 27.
자바 ORM 표준 JPA 프로그래밍 : 영속성 관리 (3장) 📌 엔티티 매니저 팩토리와 엔티티 매니저 🧷 엔티티 매니저 팩토리 팩토리를 만들기 위해서는 많은 비용을 요구한다. 하나만 만들어서 애플리케이션 전체에서 사용한다. 설정 정보(persistence.xml)를 바탕으로 생성한다. 서로 다른 스레드 간에 공유해도 문제가 없다. 🧷 엔티티 매니저 생성하는데 비용이 거의 들지 않는다. 동시성 문제 때문에 스레드 간에 공유 금지. 필요한 시점까지 커넥션을 얻지 않는다. 보통 트랜잭션을 시작할 때 커넥션을 얻는다. 엔티티 매니저 팩토리를 생성할 때 커넥션풀도 만드는 방법은 J2SE 환경에서 사용하는 방법이다. 대부분의 JPA 구현체들이 사용하는 방법이다. 📌 영속성 컨텍스트란? JPA를 이해하는데 가장 중요한 용어는 영속성 컨텍스트(persistence context.. 2022. 9. 26.
자바 ORM 표준 JPA 프로그래밍 : JPA 시작 (2장) 📌 객체 매핑 시작 JPA를 사용하려면 가장 먼저 클래스와 테이블과의 매핑이 필요하다. 매핑을 위해서 JPA에서 제공하는 어노테이션(javax.persistence.*)을 추가해야 한다. 🌀Entity 클래스를 테이블과 매핑한다고 JPA에게 알려주는 어노테이션이다. 이 어노테이션이 붙은 클래스를 엔티티 클래스라고 부른다. 🌀Table 엔티티 클래스에 매핑할 테이블 정보를 알려주는 어노테이션이다. name 속성으로 어떤 테이블과 매핑할지 설정할 수 있다. 만약 생략한다면 엔티티 이름을 사용한다. 🌀Id 엔티티 클래스의 필드를 기본 키(PK)에 매핑하는 어노테이션이다. 이 어노테이션이 붙은 필드를 식별자 필드라고 한다. 🌀Column 필드를 칼럼에 매핑하는 어노테이션이다. 매핑 어노테이션을 생략하면 필드명을.. 2022. 9. 15.
TIL : Lombok 알아보기 (12) 💻 Java Lombok이란? Java의 반복되는 메소드를 Annotation을 사용해 자동으로 작성해주는 라이브러리이다! 중요한 어노테이션 위주로 가볍게 살펴보자. 1️⃣ @Getter, @Setter 필드 혹은 클래스에 선언해서 사용한다. getField() (boolean 타입은 isField())와 setField() 메소드를 자동으로 생성 2️⃣ @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor 생성자를 자동으로 생성해주는 어노테이션 @NoArgsConstructor : 파라미터가 없는 기본 생성자 @AllArgsConstructor : 모든 필드를 파라미터로 받는 생성자 @RequiredArgsConstructor : fina.. 2022. 9. 14.