백엔드

    [ JPA ] 5-2. Entity Relations ( 1:1 @OneToOne )

    Reference. 한 번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online 이전 글 더보기 1. Repository interface 메서드 2. Query Method 정의 및 실습 3. Entity 기본 속성 4. Entity Listener 5-1. Entity Relations (ERD, 데이터베이스 기준 연관 관계) 1. 속성 @OneToOne 속성 optional: 데이터가 필수적(not null)인지, 아닌지(null) 여부 ( default: true ) → 필수적일 때(optional = false) 컬럼은 not null, select 쿼리는 inner join으로 변경 Hibernate: create table book_review_info ( id bigin..

    [ JPA ] 5-1. Entity Relations (ERD, 데이터베이스 기준 연관 관계)

    Reference. 한 번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online 이전 글 더보기 1. Repository interface 메서드 2. Query Method 정의 및 실습 3. Entity 기본 속성 4. Entity Listener 1. ERD 1. ERD 작성하기 웹 ERD 작성: http://draw.io/ 2. ERD 사용하는 방법 왼쪽 메뉴에 Entity Relation 메뉴 선택 Table 선택 생성 후 테이블명과 컬럼명을 지정 → 컬럼을 추가할 때는 Ctrl + Enter를 누르면 밑으로 컬럼이 추가 됌 릴레이션은 두개 이상의 테이블에서 기준이 되는 테이블에서 연결할 테이블로 선택 릴레이션을 선택하여, 테이블간의 관계를 표시할 수 있음(1:1, 1:N, ..

    [ JPA ] 4. Entity Listener

    Reference. 한 번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online 이전 글 더보기 1. Repository interface 메서드 2. Query Method 정의 및 실습 3, Entity 기본속성 5.5. Entity Listener Listener: 이벤트를 관찰하고 있다가 발생하면 특정 동작을 진행 1. Entity Listener Annotation @PrePersist: insert method가 호출되기 전 @PreUpdate: merge method가 호출되기 전 @PreRemove: delete method가 호출되기 전 @PostPersist: insert method가 호출된 이후 @PostUpdate: merge method가 호출된 이후 @Pos..

    [ JPA ] 3. Entity 기본속성

    Reference. 한 번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online 이전 글 더보기 1. Repository interface 메서드 2. Query Method 정의 및 실습 1. Entity Annotation @Entity: JPA에서 관리하는 도메인이라는 것을 설정 @Id: PK역할을 하며 필수조건 @GeneratedValue: - 어노테이션 안에 GenerationType strategy() default AUTO; 중요 - 트랜잭션이 종료되기 전, autoIncrese를 통해 아이디 값을 사전에 가져온다. commit 되지 않고, 로직이 종료되어도 키는 증가된다. 1. IDENTITY: Mysql, Mariadb 2. SEQUENCE: Oracle, Postgr..

    [ JPA ] 2. Query Method 정의 및 실습

    Reference. 한 번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online 이전 글 더보기 1. Repository interface 메서드 1. 쿼리 반환 유형 예를 들어, 아래와 같이 입력이 가능 [이미지. Table 11]를 참조하면 된다. public interface UserRepository extends JpaRepository{ User findByName(String name); Optional findByName(String name); List findByName(String name); Set findByName(String name); ... } 2. 쿼리 주제 키워드 "findUserBy-"로 사용 가능. 그러나 Repository자체에 User를 선언하..

    [ JPA ] 1. Repository interface 메소드

    1. 사전 준비 -프로젝트 구성 -build.gradle dependencies{ implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' } 1. data.sql을 통해 기초 데이터 생..

    [ 스프링부트 / Spring Boot ] 2.5.x data.sql 문제 (h2, mysql)

    1. 문제 발생 온라인 강의를 듣는 중, data.sql을 만들어서 기초 데이터를 넣는 부분이 있었다. 같은 소스를 실행했는데, 문제가 발생하여 데이터가 입력되지 않고 에러가 발생했다. 2. 원인 파악 프로젝트 구성 및 테스트 코드 data.sql call next value for hibernate_sequence; insert into user (`id`, `name`, `email`, `created_at`, `updated_at`) values (1, 'martin', 'martin@fastcampus.com', now(), now()); call next value for hibernate_sequence; insert into user (`id`, `name`, `email`, `created..

    [ 스프링 / Spring ] 4.x Controller Dto파라미터 매핑 안되는 현상 처리

    작업을 하던 중 해결하는데 시간이 걸려 적게 되었다. 1. 문제 기존 시스템 컨트롤러 - > 새 시스템 컨트롤러에 이관하는 작업을 진행했다. 화면상에 form태그(post)로 해당 컨트롤러에 값을 전달한다. dateFrom, dateTo라는 두개의 값을 전달하는데 컨트롤러에 해당 dto에는 값이 매핑되지 않는 현상이 발생하였다. 기존 시스템에서는 dto에 값이 매핑이 됐고, 새 시스템에는 dto에 값이 매핑되지 않았다. 두 시스템은 같은 소스를 옮겨놓은 상태여서 소스는 동일했다. 2. 작업 과정 아래와 같이 문제들이 될만한 요소를 생각해 봤다. 1. 필터(Filter), 인터셉터(interceptor)에서 문제 발생 2. 설정(Config) 관련 문제 2.1. 필터(Filter), 인터셉터(interce..