| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- 컴퓨터 공학
- SpringBoot
- 연관관계
- JWT
- ORM
- SpringSecurity
- 자료구조
- LinkedList
- TestCode
- 백준
- error
- QueryDSL
- 백엔드스쿨
- 백엔드공부
- 백엔드
- 핵심가이드
- JPA
- spring
- 서버
- spring boot
- actuator
- 스프링부트
- array
- 제로베이스
- 컴퓨터 구조
- 프로그래머스
- Java
- restTemplate
- 개발자
- queue
- Today
- Total
목록Java (37)
be_better
에러아닌 에러 발생 스프링 프로젝트를 생성할 때 Spring Initialize를 통해 생성하게 된다. 자동으로 build.gradle Build를 마친 후 Application을 실행시키면 바로 종료되는 현상이 발생한다. 해결 build.gradle 파일에 spring-boot-starter-web 의존성을 추가해준다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' } 그리고 나서 실행시켜주면 정상적으로 톰켓이 실행되는 것을 볼 수 있다. 참고 포스팅 https://smelting.tistory.com/51
영속성 전이 영속성 전이(cascade)란 특정 엔티티의 영속성 상태를 변경할 때 그 엔티티와 연관된 엔티티의 영속성에도 영향을 미쳐 영속성 상태를 변경하는 것을 의미한다. @OneToMany 어노테이션의 인터페이스를 살펴보면 영속성 전이를 설정하는데 활용되는 cascade()라는 요소가 있다. public @interface OneToMany { Class targetEntity() default void.class; CascadeType[] cascade() default {}; FetchType fetch() default LAZY; String mappedBy() default ""; boolean orphanRemoval() default false; } cascade() 요소와 함께 사용하는 ..
다대일, 일대다 매핑 다대일 단방향 매핑 공급업체 엔티티 클래스 생성 Provider.java @Entity @Getter @Setter @NoArgsConstructor @ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) @Table(name = "provider") public class Provider extends BaseEntity{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; } 상품 엔티티에서 공급업체의 번호를 받기 위해 다음과 같이 엔티티 필드의 구성을 추가한다. Product 엔티티에 Provider 필..
RDBMS를 사용할 때는 테이블 하나만 사용해서 애플리케이션의 모든 기능을 구현하기란 불가능하다. 대체로 설계가 복잡해지면 각 도메인에 맞는 테이블을 설계하고 연관관계를 설정해서 조인(Join) 등의 기능을 활용한다. JPA를 사용하는 애플리케이션에서도 테이블의 연관관계를 엔티티 간의 연관관계로 표현할 수 있다. 연관관계 매핑 종류와 방향 두 엔티티 간에 생성할 수 있는 연관관계의 종류 One To One: 일대일(1:1) One To Many: 일대다(1:N) Many To One: 다대일(N:1) Many To Many: 다대다(N:M) 연관관계를 이해하기 위해 한 가게가 재고관리시스템을 통해 상품을 관리한다고 가정할 때, 공급업체 입장에서 보면 한 가게에 납품하는 상품이 여러 개 있을 수 있으므로 ..
JPA Auditing 적용 JPA에서 'Audit'이란 '감시하다'라는 뜻으로, 각 데이터마다 '누가', '언제' 데이터를 생성했고 변경했는지 감시한다는 의미로 사용된다. 앞에서 작성한 코드를 보면 알 수 있듯 엔티티 클래스에는 공통적으로 '생성 일자'와 '변경 일자' 필드가 들어간다. 대표적으로 많이 사용되는 필드는 다음과 같다. 생성 주체 생성 일자 변경 주체 변경 일자 이러한 필드들은 매번 엔티티를 생성하거나 변경할 때마다 값을 주입해야 하는 번거로움이 있는데 이 같은 번거로움을 해소하기 위해 Spring Data JPA에서는 이러한 값을 자동으로 넣어주는 기능을 제공한다. JPA Auditing 기능 활성화 먼저 스프링 부트 애플리케이션에 Auditing 기능을 활성화해야 한다. main() 메..
build.gradle 수정 코드 맨 위 queryDslVersion 추가 buildscript { ext { queryDslVersion = "5.0.0" } } plugin 추가 plugins { id 'java' id 'org.springframework.boot' version '2.7.17' id 'io.spring.dependency-management' version '1.0.15.RELEASE' // querydsl 플러그인 추가 id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } configurations 확인 configurations { compileOnly { extendsFrom annotationProcessor } } depe..
@Query 어노테이션 사용하기 @Query 어노테이션을 사용해 직접 JPQL을 작성할 수도 있다. JPQL을 사용하면 JPA 구현체에서 자동으로 쿼리 문장을 해석하고 실행하게 된다. 만약 데이터베이스를 다른 데이터베이스로 변경할 일이 없다면 직접 해당 데이터베이스에 특화된 SQL을 작성할 수 있으며, 주로 튜닝된 쿼리를 사용하고나 할 때 직접 SQL을 작성한다. @Query("(1)SELECT p FROM Product (2)AS p WHERE p.name = (3)?1" List findByName(String name); @Query 어노테이션을 사용해 JPQL 형식의 쿼리문을 작성한다. (1) 예약어에 해당하는 단어는 소문자로 작성해도 된다. (2) FROM 뒤에서 엔티티 타입을 지정하고 별칭을 ..
정렬과 페이징 처리 애플리케이션에서 자주 사용되는 정렬과 페이징 처리는 쿼리 메서드를 작성하는 방법을 기반으로 수행할 수 있다. 정렬 처리하기 일반적인 쿼리문에서 정렬을 사용할 때는 ORDER BY 구문을 사용한다. 쿼리 메서드도 정렬 기능에 동일한 키워드가 사용된다. // Asc : 오름차순, Desc : 내림차순 List findByNameOrderByNumberAsc(String name); List findByNameOrderByNumberDesc(String name); 기본 쿼리 메서드를 작성한 후 OrderBy 키워드를 삽입하고 정렬하고자 하는 칼럼과 오름차순/내림차순을 설정하면 정렬이 수행된다. 오름차순으로 정렬하려면 Asc 키워드를, 내림차순으로 정렬하려면 Desc 키워드를 사용한다. 다..