React - 기본구조, JSX, State, uuid / Spring - entity / JPA - 원하는 메소드 생성, 날짜 데이터, 조인

두부링·2025년 3월 4일

Spring

목록 보기
10/24

React

기본구조

  • src 를 해석한 결과 자바스크립트를 얻어내는 환경 = React
  • 작업한 결과 = bundele.js로 얻어낸다.
  • spring boot 에 돌릴려면 작업한 결과 파일을 templates 에 붙인다.
  • create react app = 개발 프로젝트를 만들면 실시간으로 bundle.js 로 얻어낼 수 있다.

===> index.html 이랑 src를 붙이면 똑같이 돌아감.

JSX

  • JSX : 자바스크립트와 xml 이 혼재하고 있다.
  • JSX에서는 단독으로 닫는 기호가 반드시 존재해야 한다.
<br/> , <input/> 으로 반드시 닫아줘야 한다.

지금 우리는... src 파일을 계속해서 쌓아간다.

상태값 관리

왜 하는가...? 데이터를 변경하면 UI가 자동으로 업데이트

  • 새로운 숫자, 문자열, 배열, 오브젝트로 덮는다.
  • 상태와 변화하는 방식을 분리해서 실행.

    상태값을 변경하기 위해서는 함수를 만들고 거기에서 setCount 등의 메소드를 이용해서 변경한다.

key

  • React의 구조상 요소를 가져올 때 고유의 key 값으로 가지고 오기에 요소마다 고유의 키를 가지고 있어야 한다.
  • ctrl + c 는 서버 작동 종료시키기

uuid

  • 서버 시작한 terminal 에서 install 해야 함
  • 고유의 id를 생성하기 위해 uuid 함수를 이용하기
  • 요소에 key 값으로 uuid로 생성한 아이디 부여하기

    파일의 고유한 이름처럼 uuid를 import 해서 단 하나뿐인 이름을 만든다.

Spring boot

JPA

  • 테이블을 entity로 간편하게 만들 수 있으면 sql문을 작성하지 않아도 DB에 접근이 가능하다.

h2db test db

entity

  • entity 의 빈으로 인해 test bd에 테이블이 생성됨
  • @ID , @GeneratedValue 로 primary key 생성
  • insert 할 때 row를 entity로 변경 메소드를 같이 설정함

    entity 생성 == 테이블 생성

Repository

  • repository에서 상속받는 순간 insert, update 등이 가능해진다.

save은 insert 와 update를 모두 수행

  • primary key가 null이면 insert 가 일어나고
    null이 아니면 update가 일어난다.

getById, findById

findById

  • findById는 추가적인 작업이 가능함
Optional <Member> 은 추가적으로 조작이 가능하다...?
  • .get() 을 이용해서 값을 얻어올 수 있음

getById

  • getById 는 entity 를 얻어오는 메서드가 없음

    entity 로 얻어올 수 없으니 변경 과정이 복잡할 듯

!!!리스트 가져오는 코드 !!!

  • repo의 findAll로, entity 가 담긴 list 가져오고, stream 과 map으로 요소를 dto로 변경하고, list 로 뽑음

원하는 메소드 생성

내림차순 정렬된 list를 얻어내기

  • Repository에 규칙대로 적는 순간 원하는 sql문이 실행된다.
  • service 에서 위에 작성한 쿼리처럼 데이터 가져옴

작성한 순간 원하는 sql문이 작성됨....

내림차순 정렬된 list를 얻어내기(직접 생성하기)

  • @Query

    선택된 row가 list에 담기는 것에 의의가 있음

날짜 데이터를 현재 입력한 날짜로 넣기

  • @PrePersist
  • 데이터 넣을 때 SYSDATE 넣은 느낌쓰

    entity로 createdAt 열에 SYSDATE 로 넣는 기능

oracle SYSDATE 쿼리

  • oracle 에서 SYSDATE 사용하는 쿼리
CREATE TABLE test_table (
    id NUMBER PRIMARY KEY,
    name VARCHAR2(100),
    created_at DATE DEFAULT SYSDATE
);

INSERT INTO test_table (id, name) VALUES (1, '테스트 데이터');
SELECT * FROM test_table;

date 형식을 dto 담기

  • String type 으로 저장
  • SimpleDateFormat으로 date 열을 string 으로 변경 후 dto의 builder 에 넣기

    dto에 담기 전에는 Date 형식을 String 으로 꼭 변경하기

JpaRepository 를 사용하지 않고 직접 DB를 사용(구조 확인)

  • Jpa 에 내재되어 있는 작업을 직접 해보기
  • persist 영구화, commit 저장, 아니면 rollback , close 작업 종료

Emp

join 을 어떻게...?

  • dept 는 부모, emp는 자식...
  • many 사원이 하나의 부서에 속할 수 있음 = many to one = emp 자식이 주가 된다.
  • 하나의 부서에 many 사원이 속할 수 있음 = one to many = dept 부모가 주가 된다.

join 프로세스

  1. entity에 조인 관계 작성
  • 지금 현재의 entity에서 ManyToOne 인지? OneToMany? 인지 생각하기
  • dept 열에는 해당 dept 부서 정보가 통째로 들어가 잇음
  1. 조인관계 형성된 entity를 담을 새로운 dto 생성
  • EmpDeptDto를 만들어서 데이터를 담되 부서정보가 담긴 데이터는 .getDept()에서 한번 더 들어가서

    조인해서 얻은 열의 값은 2번 깊게 들어가야 함

  • 사원에 대한 정보, 부서에 대한 정보 + 몇 명이 근무하는가....?

  • 사원이름 클릭시 사원에 대한 정보를 볼 수 있게끔

  • 한쪽은 readonly로 사용하는게

  • JPA의 양방향 맵핑

보완점

  1. JPA 흐름 PPT 정리...?

  2. eentity 와 dto가 떨어져 있고 다른 존재라고 생각하기

  • table 생성은 entity에서 일어나고 UI에서 데이터를 보여주기 위해서는 dto에 담아야 함.
  1. .stream 과 :: 연관해서 생가하기
profile
하이하잉

0개의 댓글