Spring 9

[Spring] JPA의 OSIV의 특징

트랜잭션 범위의 영속성 컨텍스트 스프링 컨테이너는 JPA의 영속성 컨텍스트를 지원할 때, 기본 전략으로 트랜잭션 범위의 영속성 컨텍스트를 사용합니다. 트랜잭션의 범위와 영속성 컨텍스트의 생존 범위를 맞추는 전략으로, 트랜잭션이 시작하는 순간 영속성 컨텍스트도 생성되고, 트랜잭션이 끝나는 순간에 영속성 컨텍스트가 종료됩니다. OSIV(Open Session In View) 영속성 컨텍스트를 뷰까지 열어두겠다는 의미입니다. OSIV는 원래 하이버네이트에서 사용하는 용어입니다. JPA에서는 OEIV(Open EntityManger In View)라고 하지만, 관례상 다들 OSIV라고 부릅니다. 영속성 컨텍스트가 살아있으면, 엔티티는 영속 상태로 관리되기 때문에 지연 로딩을 사용할 수 있습니다. spring.j..

java and sping 2023.06.10

[Spring] JPA의 Fetch Join에 대해서?

안녕하세요 저번 시간에 실무에서 일어나는 문제 중에 제일 빈번하게 일어나는 N+1 문제에 대해서 정리를 해봤는데요. [Spring] ORM(JPA, Django 등)에서의 제일 큰 N + 1 문제 ?(Fetch 조인) 안녕하세요 JPA를 공부하다가 가장 많은 문제가 발생하는 N + 1 문제에 대해서 설명해보겠습니다. N+1 문제란? 연관 관게에서 발생하는 이슈로 연관 관계가 설정된 엔티티를 조회할 경우에 조회된 nosechild.tistory.com 이번 포스팅에서는 N+1문제를 해결할 수 있는 Fetch Join에 대해서 알아보겠습니다. Fetch Join(페치 조인) Fetch Join은 SQL에서 말하는 조인의 종류가 아닙니다. JPQL에서 성능 최적화를 위해 제공하는 조인의 종류입니다. ※JPQL..

java and sping 2023.05.30

[Spring] JPA @MappedSuperclass 사용법

안녕하세요 저번 시간에는 JPA의 상속관계에 대해서 자세히 알아보았는데요 [Spring] JPA의 상속관계 인프런에 영한님 강의를 듣고 정리해본 블로그 게시물입니다. JPA 연관관계(단방향/양방향 , 다중성) 인프런에 영한님 강의를 듣고 정리해본 블로그 게시물입니다. [Spring] JPA의 연관관계(단방향/ nosechild.tistory.com 이번 시간에는 이름은 상속관계처럼 보이지만 아닌 @MappedSuperclass의 개념과 사용하는 방법에 대해서 알아보겠습니다. @MappedSuperclass 앞에 배웠던 상속관계 매핑이 아닙니다. 엔티티 매핑도 안하고 테이블 매핑도 안합니다. 부모 클래스를 상속 받는 자식 클래스에 매핑 정보만 제공합니다. 조회, 검색이 불가합니다. 직접 생성해서 사용할 일..

java and sping 2023.05.04

[Spring] JPA에 Enum 사용법

enum 이란? - 관련이 있는 상수들의 집합이다. 일반적으로 상수를 정의할 때, public static final String으로 상수를 정의한다. 하지만 이렇게 상수를 정의하면서 다양한 문제들이 발생하게 되었고 JAVA 1.5버전부터는 서로 연관된 상수들의 집합을 의미하는 열거형 클래스 Enum을 도입하게 되었다. @Enumerated 어노테이션 사용하기 @Enumerated는 enum 값을 Database의 저장하는 방법을 2가지를 제공합니다. 아래는 클래스 파일의 내용입니다. ORDINAL은 서수, 즉 순서를 나타내는 수입니다. 즉 순서를 나타내는 숫자를 Database의 저장합니다. 따로 저장하지 않으면 @Enmerated로만 지정하면 ORDINAL로 설정됩니다. STRING은 문자열, ENU..

java and sping 2023.03.22

[Spring] DTO를 사용하는 이유?

안녕하세요 오늘은 Spring 공부를 하면서 DTO로 이용해서 데이터 간의 이동이 많이 일어나는데요 DTO를 자세하게 쓰는 방법이랑 개념에 대해서 자세하게 살펴보겠습니다. Entity 란? Entity 클래스는 DB 테이블에 존재하는 Column들을 필드로 가지는 객체를 말합니다. Entity는 DB의 테이블과 1대 1로 대응되며 때문에 가지지 않는 칼럼을 필드로 가져서는 안 됩니다. 또한 Entity 클래스는 다른 클래스를 상속받거나 인터페이스의 구현체여서는 안 된다. 예를 들어 Member라는 테이블이 id, name, email, phoneNumber 라는 칼럼들을 가지고 있다면, 이에 대응하는 클래스인 Post는 @Entity public class Post { private Long id; pr..

java and sping 2023.03.18

[Java] Lombok 롬복 라이브러리란?

안녕하세요 오늘은 스프링 공부를 하면서 유용하게 사용하고 있는 Lombok 롬복 라이브러리에 대해서 정리를 해보는 가져볼게요 Lombok Lombok이란 Java 라이브러리로 반복되는 getter, setter, toString 등의 반복 메서드 작성 코드를 줄여주는 코드 다이어트 라이브러리이다. Java에서 보통 model 클래스나 Entity 같은 도메인 클래스 등에서 수많은 멤버변수가 있고 이에 대응되는 getter, setter와 toString() 메서드, 때에 따라 멤버변수에 따른 여러 개의 생성자를 만들어주는 데, 거의 대부분 이클립스나 인텔리제이 같은 IDE에서 자동생성 기능이 있지만, 이 역시도 번거로운 작업이 아닐 수 있다. 뿐만 아니라 코드 자체가 반복 소스 코드로 복잡해진다. Lom..

java and sping 2023.01.02

ThreadLocal 이란?

안녕하세요 Spring을 공부하다가 JAVA 내용을 기억할려고 블로그에다가 정리를 해봐요 저번에는 JAVA의 Collection 부분을 정리를 하였는데요 2022.07.18 - [java] - [Java] 컬렉션 - Collection 이란? [Java] 컬렉션 - Collection 이란? 안녕하세요 오랜만에 Java 공부를 하다가 Collection 부분 블로그 기록 남기는 정리해서 알려드릴게요 Collection 이란? 객체의 모음, 그룹이라고 할 수 있습니다. 자바에서느 값을 저장하는 다양한 컨 nosechild.tistory.com 위에 참고하면 감사하겠습니다 이번에는 공부를 하다가 ThreadLocal 클래스에 대해서 정리를 해보겠습니다. ThreadLocal ThreadLocal은 JDK 1..

java 2022.07.28

[Spring] DI와 IoC에 관해서

안녕하세요 스프링 공부를 하면서 제가 배운 것을 블로그에 정리를 하겠습니다. 오늘은 DI, IoC에 대해서 자세히 설명할게요 DI(Dependency Injection) DI(Dependency Injection)란 스프링이 다른 프레임워크와 차별화되어 제공하는 의존관계 주입 기능으로, 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입시키는 방식이다. DI(의존성 주입)을 통해서 모듈 간의 결합도가 낮아지고 유연성이 높아집니다. 의존관계 주입을 사용하면 정적인 클래스 의존관계를 변경하지 않고, 동적인 객체 인스턴스 의존관계를 쉽게 변경할 수 있다. 자바로 프로그래밍 하면서 객체를 생성할 때 직접 클래스에 new 연산자를 이용하여 생성하였습니다. 하지만 DI는 개발자가 직접 코딩을 하여 객체를 생성..

java and sping 2022.07.28

[Java] Static import 란?

안녕하세요 Spring 공부하다가 Test 기능에서 Static import를 써서 사용한 것을 정리해볼려고 합니다. Static import Static import문은 JDK1.5부터 추가된 기능이다. import문을 사용하면 클래스의 패키지명을 생략할 수 있는 것과 같이 Static import문을 사용하면 static멤버를 호출할 때 클래스명을 생략할 수 있다. 코드가 간결해지고 특정 클래스의 static 멤버를 자주 사용할 때 편리하지만 남용하면 독이 될 수 있기 때문에 주의 해야합니다. 테스트 프레임워크인 JUnit을 사용하다보면 static import 적절한 예를 살펴볼 수 있습니다. 위의 테스트는 static import를 적용하지 않았을 때이고, 밑에 예제는 Static import를 ..

java 2022.07.14