본문 바로가기

jpa4

[Spring-boot JPA] 즉시로딩(EAGER)과 지연로딩(LAZY) 즉시로딩(FetchType - EAGER)은 엔티티를 조회할 때 연관된엔티티를 함께 조회합니다. 상품 Item과 카테고리 Category 엔티티가 N:1관계일 때 상품 테이블에Category 엔티티를 추가할 수 있습니다. 이 때 fetch type을 정할 수 있는데, 이 타입을 LAZY로 설정하면 지연로딩, EAGER로 설정하면 즉각 로딩으로 설정할 수 있습니다. 즉시로딩은 Item 엔티티를 조회할 때 연관된 Category 엔티티를 즉시 조인해서 값을 넣어주게 됩니다. 지연로딩은 Item 엔티티를 조회할 때 연관된 Category 엔티티를 조인하지 않습니다. 즉 값을 넣어주지 않습니다. 대신 이 Category엔티티를 참조할 때 조인 쿼리를 작성하여 값을 넣어줍니다. 필요할 때 넣어준다는 뜻입니다. N.. 2019. 9. 6.
[Spring-boot JPA] JPA Hibernate Log 정렬해서 보여주기 application.properties파일에 다음 속성을 추가해주세요. spring.jpa.show-sql=true spring.jpa.properties.hibernate.format_sql=true show-sql 속성은 sql쿼리문을 보여주도록 true로 설정해주세요. spring.jpa.properties.hibernate.format_sql 속성은 코드센스에 잘 안보입니다. 직접 적어주세요. 이 속성은 sql query 로그가 한줄로 나오지 않고 정렬해서 나오도록 보여줍니다. 위 속성들을 적용한 걸과는 다음과 같이 정렬되어 보입니다. 2019. 9. 6.
[Spring-boot JPA] 맵핑 어노테이션 @Entity, @Table, @Column, @Id 속성과 개념 정리 객체 - 테이블 맵핑 : @Entity, @Table 필드 - 컬럼의 팹핑 : @Column 기본키의 맵핑 : @Id 조인 맵핑 : @ManyToOne, @JoinColumn @Entity @Entity 어노테이션을 클래스에 선언하면 그 클래스는 JPA가 관리합니다. 그러므로 DB의 테이블과 Class(VO, DTO)와 맵핑한다면 반드시 @Entity를 붙여주어야 합니다. @Entity가 붙은 클래스에는 다음 제약사항이 필요합니다. 1. 필드에 final, enum, interface, class를 사용할 수 없습니다. 2. 생성자중 기본 생성자가 반드시 필요합니다. @Entity의 속성 1. name : 엔티티 이름을 지정합니다. 기본값으로 클래스 이름을 그대로 사용합니다. @Table @Table 어.. 2019. 9. 5.
[Spring-boot JPA] @Entity, @Id, save 예제 JPA는 DBMS와 Java를 연결해주는 ORM의 일종입니다. 계속 쓰이던 MyBatis와의 차이점은, 객체 지향적으로 데이터베이스를 사용할 수 있다는 점입니다. 컬렉션에서는 꺼낸 객체의 값을 변경한다면 그 객체를 다시 컬렉션에 저장하지 않아도 자동으로 그 객체의 값이 변합니다. JPA의 영속 컨텍스트는 자신이 관리하는 객체의 값이 변경하는것을 감지하여 값이 변한다면 DB에 UPDATE문을 통해 값을 같이 변경시킵니다. 예제를통해 살펴보겠습니다. Spring Starter Project로 Spring-boot 프로젝트를 만들어주세요. 각 항복은 다음과 같이 입력해주세요. JPA를 사용하기 위해서 내장 데이터베이스인 H2, JPA 의존성인 Spring Data JPA, 웹을 사용하기 위한 Spring We.. 2019. 9. 5.