JPA

Spring/JPA

[JPA / Spring] JPQL을 이용해서 Entity가 아닌 DTO를 반환하는 방법

예제 소스코드(Google Drive)https://drive.google.com/file/d/1YrsS9-sjHM4QSLhe-5GZsvcfVlvMI_Z9/view?usp=sharingapplication.property 파일 수정해서 DB 연결해서 테스트해 보실 수 있습니다. (소스코드에서는 xxx처리) JPQL을 이용해서 DTO를 반환??? JPA를 이용하는 경우, 특정 상황에서 Entity 전체가 아닌 일부 컬럼만을 가져오고 싶을 때, @Query 어노테이션 내에 작성하는 JPQL에서 Java 객체를 생성하는 코드를 추가하는 방법을 사용할 수 있다. Spring-data-jpa가 제공하는 JpaRepository 인터페이스를 이용할 것이고, 회원과 주문으로 구성된 간단한 예제이다.회원(MemberE..

기타/Tech Interview

백엔드 개발자 기술 면접 정리 - Spring, JPA

Spring 웹 개발 관련 질문 모음입니다. 자세한 내용은 추가로 검색을 해보셔서, 본인의 언어로 정리하시길 추천드립니다. 이 글 역시 제 생각과 언어에 맞게 정리하였고, 틀린 부분이 있을 수 있으니 댓글로 지적해 주시면 감사하겠습니다! [ Spring ] 💡IoC(Inversion of Control) 란? ⬇️Answer 더보기 제어의 역전 IoC는 객체의 생성과 관리를 스프링 프레임워크가 대신하도록 위임 스프링 컨테이너에 Bean을 미리 등록하고, 필요한 곳에서 컨테이너에서 빈을 가져와 사용할 수 있게 됩니다. 이때, Bean을 가져올 때 의존성 주입(DI) 방식을 사용하여 객체 간의 의존성을 자동으로 주입받을 수 있게 됩니다. 💡DI (Dependency Injection) 란? ⬇️Answer ..

Spring/JPA

[JPA] 연관 관계 매핑 - @ManyToMany

JPA 연관관계 매핑의 종류 JPA 연관관계 매핑의 종류는 @ManyToOne, @OneToMany, @OneToOne, @ManyToMany가 있다. 이 글에서는 @ManyToMany 관계에 대해 다룬다. @ManyToMany : 다대다 매핑 RDBMS는 정규화된 테이블 2개로 다대다 관계를 표현할 수 없다. 따라서 연결 테이블을 추가해서 다대다 관계를 일대다 + 다대일 관계로 풀어내야 한다. 결론적으로는 다대다 매핑은 실무에서 사용하지 않는 방법이라고 한다. @ManyToMany 양방향 매핑 example @Entity public class Member { @Id @GeneratedValue private Long id; private String username; @ManyToMany @JoinT..

Spring/JPA

[JPA] 연관관계 매핑

테이블 간의 연관관계 기존 테이블 간의 연관관계 설정 기본적으로 데이터베이스에서 엔티티(테이블) 간의 연관관계는 Foreign Key를 통해서 하는 것을 알고 있을 것이다. 그러나 Java에서 이 Key를 가지고 다른 테이블을 넘나들려면 꽤나 긴 과정이 필요하다. Member 엔티티와 멤버가 소속된 Team 엔티티를 가정해 보자. [JPA 사용 시 가능해지는 연관관계 설정 예제] 더보기 예제(memberId로 멤버가 소속된 팀의 이름을 찾아보자) Member객체는 필드로 Long teamId를 갖고 데이터베이스 MEMBER 테이블이 TEAM_ID 럼을 갖게 될 것이다. 이런 경우 memberA라는 멤버의 team의 이름을 구하려고 하면 어떻게 해야 할까? Member member = memberRepos..

Spring/JPA

[JPA] 연관관계 매핑 - @OneToOne 일대일 매핑

JPA 연관관계 매핑의 종류 JPA 연관관계 매핑의 종류는 @ManyToOne, @OneToMany, @OneToOne, @ManyToMany가 있다. 이 글에서는 @OneToOne 관계에 대해 다룬다. 아래 예제에서는 Member(멤버)가 하나씩 가질 수 있는 Locker(사물함)을 가정했다. @OneToOne(일대일 매핑) 기본적으로 @ManyToOne의 매핑 관계와 유사하다. Member와 Locker(사물함) 엔티티가 1대 1 매핑된다고 가정하자. 일대일 매핑시에는 FK에 unique 제약조건을 추가하는 것이 좋다. 일대일 단방향 (ex 1) (Member가 연관관계의 주인) @Entity public class Member { @Id @GeneratedValue private Long id; p..

Spring/JPA

[JPA] 연관관계 매핑 - @ManyToOne, @OneToMany

JPA 연관관계 매핑의 종류 JPA 연관관계 매핑의 종류는 @ManyToOne, @OneToMany, @OneToOne, @ManyToMany가 있다. 이 글에서는 @ManyToOne과 @OneToMany 관계에 대해 다룬다. 아래 예제에서는 Team에 속해있는 여러 Member들을 가정했다. @ManyToOne(다대일 매핑) 가장 많이 사용하는 연관관계로 여러 개(Many)의 멤버가 한 개(One)의 팀에 속해있는 것을 생각하면 된다. Member가 Team의 ID를 FK로 갖게 된다. 이러한 관계에서 연관관계의 주인은 Member이다. @Entity public class Member { @Id @GeneratedValue private Long id; private String username; @..

Spring/JPA

[JPA] @Entity - 필드와 컬럼 매핑의 여러가지 속성

필드와 컬럼 매핑 엔티티 클래스의 각 필드에 여러 가지 옵션을 갖는 어노테이션을 붙여서 더 자세히 매핑할 수 있다. Column 별 매핑 상세 @Column : 컬럼 DB 테이블의 각 컬럼 관련 제약사항 등을 추가할 수 있다. @Enumerated : enum 타입 DB에는 enum 타입이 없기 때문에 속성을 지정할 수 있다. enum은 기본적으로 숫자, 문자열 두 가지가 있다. @Enumerated(EnumType.STRING) private RoleType roleType; EnumType.STRING으로 지정하면 실제 enum의 문자열이 저장되고, EnumType.ORDINAL로 지정하면 enum 순서를 0부터 시작되는 숫자로 지정된다. STRING이 권장되고, ORDINAL은 사용하지 않는 게 좋..

Spring/JPA

[JPA] @Entity - 기본 키 매핑

@Entity 클래스에는 기본적으로 PK(PrimaryKey)가 있어야 한다. PK로 사용할 칼럼에 @Id 어노테이션을 사용하여 해당 칼럼을 PK로 설정한다. 이 PK 매핑 방법과 여러 가지 속성들에 대해 알아보자. PrimaryKey Mapping 기본적으로 @Id 어노테이션은 꼭 필요하다. 여기에 자동 생성을 위한 @GeneratedValue 어노테이션을 붙일 수 있다. PrimaryKey를 사용자가 설정하는 userId 등으로 설정할 때는 @Id 어노테이션만 사용하면 되고, ID를 임의의 값으로 순차적으로 증가시킬 때는 @GenaeratedValue 어노테이션을 추가하면 된다. Key 자동 할당 Key를 자동 할당하는 방법에는 IDENTITY, SEQUENCE, TABLE, AUTO 가 있다. Ke..

HSRyuuu
'JPA' 태그의 글 목록