반응형
[JPA] NamedQuery
Backend/Spring2022. 12. 9. 11:09[JPA] NamedQuery

Named Query 란 Entity에 @NamedQuery 어노테이션을 통해 쿼리를 지정해 줍니다. 쉽게 말하면 미리 이름을 부여해서 재활용할 수 있는 JPQL입니다. 사용 방법 도메인 클래스에 @NamedQuery 또는 @NamedNativeQuery를 정의합니다. 2개 이상의 Query를 정의하려면 @NamedQueries 또는 @NamedNativeQueries를 사용하면 됩니다. Primary Key 가 되는 칼럼은 @Id를 사용하여 지정합니다. 테이블의 칼럼명과 도메인 클래스의 필드명이 다를 경우 @Column을 이용하여 지정할 수 있습니다. 클래스 생성 위의 설명의 어노테이션을 사용하여 도메인 클래스를 생성합니다. @Entity @NamedQueries({ @NamedQuery(name = ..

[JPA] 쿼리 메서드
Backend/Spring2022. 12. 8. 16:35[JPA] 쿼리 메서드

Spring Data JPA 쿼리 메서드는 가장 강력한 메서드이며, SQL 쿼리를 작성하지 않고도 데이터베이스에서 레코드를 선택하는 쿼리 메서드를 만들 수 있습니다. 백그라운드에서 Spring Data JPA는 쿼리 메서드를 기반으로 SQL 쿼리를 생성하고 쿼리를 실행합니다. Entity 필드를 사용하여 Repository에 대한 쿼리 메서드를 생성할 수 있으며 쿼리 메서드 생성을 finder methods(findBy, findAll …)라고도 합니다. 예 findByEmailAddressAndName() 이 쿼리 메서드인 UserRepository 가 있다고 가정합니다. public interface UserRepository extends Repository { List findByEmailAddr..

[JPA] @ElementCollection 사용 예
Backend/Spring2022. 12. 5. 10:19[JPA] @ElementCollection 사용 예

RDB(Relational DataBase) 에는 Collection 형태의 데이터를 칼럼에 저장할 수 있는 방법이 없습니다. 그래서 별도의 테이블을 생성하고 Collection을 관리해야 합니다. JPA의 @ElementCollection 사용하여 별도의 테이블을 생성하고 Collection을 관리할 수 있습니다. ElementCollection 특징은 부모 Entity 에 의해 관리되고, 항상 부모와 함께 저장되고 삭제됩니다. casecade 옵션이 default입니다. 예 Collection 대상이 되는 객체는 @Entity 가 아닌 Embeddable Class로 생성하여 One-To-Many 관계를 맺습니다. @Embeddable @Data public class Address { @Column..

[Spring] Swagger Header 설정 방법
Backend/Spring2022. 10. 12. 23:49[Spring] Swagger Header 설정 방법

Spring에서 Swagger Header 설정 방법에 대해 알아보겠습니다. API 마다 설정 각 API 마다 @ApiImplicitParam을 통해 인증 정보(토큰)를 입력하도록 설정합니다. @ApiImplicitParams({@ApiImplicitParam(name = "Authorization", value = "JWT Token", required = true, dataType = "string", paramType = "header") }) @PostMapping("/auth/test") public ResponseEntity authTest() { System.err.println("authTest"); return ResponseEntity.ok("test ok"); } 이 방법은 API 개..

[JPA] 복합키 사용
Backend/Spring2022. 10. 5. 21:40[JPA] 복합키 사용

서론 복합키는 기본키가 되지 못하는 칼럼들을 서로 묶어서 기본키처럼 사용하는 것입니다. Entity 예를 들어 사용자명과 이메일을 복합키로 사용한다고 가정합니다. 복합키로 묶는 CompositePK 클래스를 생성하고, @IdClass 어노테이션을 사용하여 설정합니다. @Entity @Table(name = "tb_user") @IdClass(CompositePK.class) //이름과 이메일을 primary key로 사용 @Data public class User { @Data @AllArgsConstructor @NoArgsConstructor public static class CompositePK implements Domain { /** 사용자명 */ @Column(nullable = false,..

자바 ORM 표준 JPA 프로그래밍
Book2022. 8. 31. 09:37자바 ORM 표준 JPA 프로그래밍

책 정보 책 소개 자바 ORM 표준 JPA는 SQL 작성 없이 객체를 데이터베이스에 직접 저장할 수 있게 도와주고, 객체와 관계형 데이터베이스의 차이도 중간에서 해결해 줍니다. 이 책은 JPA 기초 이론과 핵심 원리, 그리고 실무에 필요한 성능 최적화 방법까지 JPA에 대한 모든 것을 다룹니다. 또한, 스프링 프레임워크와 JPA를 함께 사용하는 방법을 설명하고, 스프링 데이터 JPA, QueryDSL 같은 혁신적인 오픈 소스를 활용해서 자바 웹 애플리케이션을 효과적으로 개발하는 방법을 다룹니다. 리뷰 스프링 프레임워크로 웹 개발할 때 JPA를 사용하기 전에는 MyBatis를 많이 사용하였습니다. JPA를 알고 난 후 책을 바로 구매하여 공부를 시작하게 되었습니다. 4년 전에 구매한 책이지만 지금까지도 가..

[JPA] Annotation 정리
Backend/Spring2022. 8. 26. 21:58[JPA] Annotation 정리

JPA(Hibernate) Annotation 정리 JPA로 개발하면서 자주 사용하는 어노테이션을 정리하였다. @Entity 해당 클래스가 엔티티임을 알리기 위해 사용한다. 애플리케이션이 실행이 될 때 엔티티 자동검색을 통하여 이 어노테이션이 선언된 클래스들은 엔티티 빈으로 등록한다. @Table 데이터의 저장소, 테이블을 의미한다. name 값은 실제 데이터베이스의 테이블 명을 의미하며, 생략이 가능하다. 어노테이션을 생략하면 클래스의 이름을 테이블의 이름으로 자동 인식하게 된다. @Id 엔티티빈의 기본키를 의미한다. 이 어노테이션은 하나의 엔티티에는 반드시 하나가 존재해야 한다. 복수키도 설정할 수 있다. @GeneratedValue 데이터베이스에 의해 자동으로 생성된 값이라는 의미다. 즉, 프로그램..

반응형
image