분류 전체보기 954

49. 다형성 쿼리

중요하지 않다고 한다. 객체에서는 다형성 되게 중요한 개념인데 JPQL은 특정 대상만 조회할 수 있는 기능이 있다. ? 그럼 그냥 DTYPE으로 하면 되는 거 아닌가? 맞다. 쿼리가 그렇게 나간다. 보통 객체에는 DTYPE이 없었던 걸로 기억하는데.. select i from Item i where type(i) in(Book, Movie) select 별칭 from 부모엔티티 별칭 where type(별칭) in(조회할자식엔티티1, 조회할자식엔티티2); 하면 select i from i where i.DTYPE in ('B', 'M'); 이렇게 나간다. TREAT 기능 (직역 : ~ 대하다) 자바의 타입캐스팅과 유사 상속구조에서 부모타입을 특정 자식타입으로 다룰 때 사용. from, where, sel..

JPA/JPA 기본 2023.11.03

함수에서 사용하는 생명주기 useEffect()

이거는 들어온 값이 바뀔 때 마다 호출됨. 이거는 값이 바뀌면 감지하고 그걸 return해 준다. useEffect는 배열로 반환을 하는데, useEffect에 들어가 있는 배열을 의존성 배열이라고 한다. useEffect 구조 useEffect(()=>{}, []) 이렇게 useEffect(콜백, 배열); 저 배열안에 무언가 있냐 없냐에 따라 create로 동작하냐, update로 동작하냐. 콜백은 create나 update 하는 순간 실행하고 싶은 내용들. 저 배열은 반환하고 싶은 값들 넣으면 됨. update 되었을 때 보통 저기에 fetch 등해서 나오는 값을 받아 놓음. 그러면 딱 불러왔을 때 값이 바뀌면서 그걸 감지해서 콜백을 실행함. const [count, setCount] = useSta..

React 2023.11.02

48-2. 패치 조인의 한계

중요한 내용이라 이해가 부족한 거 같아서 다시 하고 넘어감. 패치 조인 대상에는 별칭을 줄 수 없다. fetch join이라는 것은 기본적으로 나와 연관된 것들을 모두 끌고 오는 것이다. 패치조인은 별칭을 주지 않는 것이 관례이다. 애초에 객체 그래프 사상 자체가, team에서 members 조회하면 그 team의 모든 members가 모두 나온다는 것을 가정하고 설계를 하였다. 그래서 fetch join 하는데 where해서 조건 줘서 걸러내서 가져오면 JPA는 객체 그래프 사상을 team의 members는 모두 나온다는 것을 가정하고 설계 하였기 때문에 뭐 cascade나 orphanRemoval 등 여러 옵션이 붙어있으면 작동이 이상하게 될 수도 있다. 그리고 만약 팀A를 조회하는데 하나는 팀A의 ..

JPA/JPA 기본 2023.11.02

외부 join

내부 조인은 두 테이블 모두 데이터가 있어야만 결과가 나왔다. 이와 달리 외부 조인은 한 쪽에만 있어도 결과를 준다. 단 null로 가져옴. 먼저 inner 조인 select * from buy b inner join member m on b.mem_id = m.mem_id; 그 다음 outer join select * from member m left outer join buy b on m.mem_id = b.mem_id; member를 다 가져오는데, 그 중 buy에 기록이 없는 mem_id도 있음. 참고로, select * from buy b left outer join member m on m.mem_id = b.mem_id; select * from member m left outer join ..

DB 2023.11.02

join

두개의 테이블 묶어서 하나의 결과를 만들어 내는 것 보통 내부 조인 많이 씀. 일대다 예를 들면 프로 축구팀 일이 팀이고 다가 선수 맨유에 여러 선수들 맨유가 일, 선수가 다 일반적으로 조인은 내부조인을 말함. 조인은 3개 이상 할 수 있지만 대부분 2개 테이블 조인 보통 다 쪽이 외래키를 가짐. select * from 테이블 inner join 추가로가져올테이블 on 조건 where 조건 select * from buy b inner join member m on b.mem_id = m.mem_id; select 가져올곳 from 테이블명 inner join 추가로가져올테이블 on 조건 where도 쓸 수 있음. select * from buy b inner join member m on b.mem_..

DB 2023.11.02

6. 닉네임

닉네임을 정하게 해보자. 정말 간단하다. form#name input(type="text" placeholder="Nickname", required) button Save 그냥 form 하나 새로 더 만들어서.. $nicknameForm.addEventListener("submit",(e)=>{ e.preventDefault(); const $input = $nicknameForm.querySelector("input"); socket.emit("nickname", $input.value); }); 이벤트를 추가해 주었다. 서버에 nickname이라는 이벤트를 내가 적은 input의 값과 함께 전달 할 것이다. io.on("connection", socket =>{ socket.nickname = "A..

실시간/Socket IO 2023.11.01

lodash

중복되는 데이터를 처리할 때 쓴다고 함. node js 말고도 cdn으로 사용 가능. window.addEventListener('scroll', (e)=>{ console.log(window.scrollY); }); 이거 스크롤 할 때 너무 실행주기가 짧아서 몇초마다만 실행시키게 지연 시키려고 로우대시, _ 말 그대로 로우대시의 기능 중 하나인데, throttle() 직역으로 조절판이라는 뜻 인데 특정 시간마다만 실행되도록 조절해 주는 듯. window.addEventListener('scroll', _.throttle(()=>{ console.log(window.scrollY); },1000)); 이렇게 하면 아무리 호출해도 1초마다만 실행. 근데 난 이거 구현할 수 있을 듯 let isEventin..