SpringBoot/JPA
Spring-Data-JPA [5] Fetch Join
Spring-Data-JPA [5] Fetch Join
2022.03.24JPA를 사용하며, Fetch Join에 대한 이야기를 많이 들어봤습니다. 이번엔 FetchJoin에 대해서 알아보겠습니다. 1. Fetch Join이란? Fetch Join은 JPQL에서 성능 최적화를 위해서 사용하는 기능입니다. 이것은 SQL의 조인 종류가 아닙니다. (SQL 조인에는 Inner Join, Outer Join(left, right, full)이 있습니다.) 어떤 상황에 성능 최적화를 진행하는가?? -> JPA에는 엔티티에 관계를 맵핑할 때 지연 로딩과 즉시 로딩 설정을 할 수 있습니다. 즉시 로딩 -> 어떠한 엔티티가 조회되었을 때 연관된 엔티티도 모두 함께 조회 지연 로딩 -> 어떠한 엔티티가 조회되었을 때 연관된 엔티티는 Proxy로 들어가게 되고, 실제로 사용될 때 DB에서 조회..
Spring-data-JPA [4] Update와 @Query
Spring-data-JPA [4] Update와 @Query
2022.03.231. @Query Repository의 메서드 위에 선엄함으로써 sql 쿼리를 작성할 수 있습니다. 명명법으로 해결하기 힘든 쿼리를 사용할 때 유용합니다. 1-1. 기본 사용법 메서드 위에 @Query(sql)을 해주시면 됩니다. @Query("select m from Member m") List findMemberBy(); @Query 안에 들어가는 테이블은 별칭을 부여해서 사용할 수 있습니다. Member 객체를 m이라는 별칭을 이용했습니다. @Test @DisplayName("@Query 사용 basic") void selectAll(){ List members = createMember(); for(Member member: members){ memberRepository.save(member);..
Spring-data-JPA [3] 명명법
Spring-data-JPA [3] 명명법
2022.03.22Springboot-Data-JPA 명명법 JPA는 반복적인 SQL 작성과 객체를 SQL에 맵핑하는 것을 대신 수행해줍니다. 따라서 개발자는 JPA를 통해서 단순 코드 작성, 맵핑하는 것에 초점을 두지 않고, 비즈니스 개발에 집중할 수 있게 되었습니다. 그중에서 SQL을 직접 작성하지 않고 메서드의 명명으로 쿼리를 사용할 수 있게 해주는 명명법에 대해서 알아보겠습니다. 명명법이 동작하는 원리도 포스팅하려 했지만, Hibernate 구현체에 디버깅 걸어도 보고 구글링도 했지만 찾지 못했습니다.. 추후에 찾게 된다면 동작 원리에 대해서도 포스팅 하겠습니다. 2022.04.10 추가 명명법의 동작 과정을 살펴보겠습니다. 사용된 query는 아래와 같습니다. Optional findByName(String na..
Spring-data-JPA(2) 개념
Spring-data-JPA(2) 개념
2022.01.06연관 관계 단반향 연관관계 @Entity public class User{ @Id @GeneratedValue private Long id; @Column private String name; @Column private int age; @ManyToOne @JoinColumn(name= "team_id") private Team team // 연관 관계 설정 } 양방향 연관관계 @Entity public class User{ @Id @GeneratedValue private Long id; @Column private String name; @Column private int age; @ManyToOne @JoinColumn(name= "team_id") private Team team // 연관 관계..
Spring-data-JPA(1) [엔티티] Entity
Spring-data-JPA(1) [엔티티] Entity
2022.01.06@Entity JPA가 괸리하는 엔티티라는 어노테이션 기본 생성자가 필수이다. (파라미터가 없는 protected 생성자 ) final 클래스, enum, interface 사용 불가 저장할 필드에 final 사용 X 속성 name --> JPA에서 사용할 엔티티의 이름을 설정한다. default 값은 클래스의 이름 그대로 @Entity // entity로 할 것에 붙여줍니다. public class Member { @Id @GeneratedValue private Long id; } @Column 컬럼 매핑 속성 name: 필드와 매핑할 테이블의 컬럼 이름 insertable, updatable: 등록, 변경 가능 여부 nullable: null값 허용을 결정 unique: 유니크한 제약조건을 건다. ..
Spring-data-JPA(0) JPA란??
Spring-data-JPA(0) JPA란??
2022.01.06▶ JPA란?? Java Persistence API: 자바 진영의 ORM 기술 표준 Object-relational mapping(객체 관계 매핑) - 객체는 객체대로 설계 - 관계형 데이터베이스는 관계형 데이터베이스대로 설계 - ORM 프레임워크가 중간에서 매핑 - 대중적인 언어에는 대부분 ORM 기술이 존재 ▶ JPA를 사용하는 이유 SQL 중심적인 개발에서 객체 중심으로 개발이 가능하여 생산성, 유지보수, 패러다임의 불일치 해결, 성능 등등 많은 이점을 얻을 수 있습니다. 영속성: 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미합니다. DB에 저장되는 entity가 영속성 컨텍스트에 포함된다면 아래와 같은 이점을 얻을 수 있다. 1. 1차 캐시 -> 영속성 컨텍스..