전체 글 954

48. 페치 조인 한계

패치 조인 대상에는 별칭을 줄 수 없음.ㄹ 하이버네이트는 가능하긴 하나, 사용하지 말라고 함. 별칭이라면 그러니까 예를 들어 join fetch t.members m where m.name = '홍길동' 이런 거 못 쓴다는 거임. fetch join 컨셉은 기본적으로 나랑 연관된 데이터를 다 끌고 오는 거임. Team의 members가 5명이 나와야 하는데, m.where해서 3명만 나오면.. 그럼 2명 누락될 수 있고.. 그래서 뭐 별칭써서 뭐.. 이런 거는 안 맞음. 쓰지 마셈. 이상하게 동작할 수 있음. 위험함. 둘 이상의 컬렉션은 패치 조인 할 수 없다. 일대다도 뻥튀기가 되는데, 일대 다 다 이니.. 패치조인 할 때 컬렉션은 하나만 지정할 수 있다. 패치조인은 페이징을 사용할 수 없다. 실행은 ..

JPA/JPA 기본 2023.11.01

47. 페치 조인 기본

fetch join 매우 중요 실무에서 엄청 많이 씀 SQL 조인 종류가 아니고, JPQL에서 성능 최적화를 위해 제공하는 기능. 연관된 엔티티나 컬렉션을 SQL로 한번에 한방 쿼리로 조회하는 기능. join fetch 조인할대상 select m from Member m join fetch m.team t 이렇게 쓴다. 그냥 join 뒤에 fetch 추가 시킨거다. 이렇게 하면 쿼리가 어떻게 나가냐면, Hibernate: /* select m from Member m join fetch m.team t */ select m1_0.id, m1_0.age, t1_0.id, t1_0.name, m1_0.type, m1_0.username from Member m1_0 join Team t1_0 on t1_0...

JPA/JPA 기본 2023.11.01

46. 경로 표현식

점 찍어서 객체 그래프 탐색하는 거. 그냥 우리가 계속 해왔던 m.username m.team 이런 거 근데 또 종류가 있음. select m.username//상태 필드 from Member m join m.team t//단일값 연관필드 join m.orders o//컬렉션 값 연관필드 where t.name 저 필드 종류에 따라 동작방식이 다름. 상태필드 : 단순히 값을 저장하기 위한 필드. 연관 필드 : 연관관계를 위한 필드 - 단일값 연관필드 : @ManyToOne, @OneToOne 대상이 엔티티. - 컬렉션 값 연관필드 : @OneToMany, @ManyToMany 대상이 컬렉션일 때 동작 상태필드 : 경로 탐색의 끝. 탐색X select m.username From Member m m.use..

JPA/JPA 기본 2023.11.01

5. 알림

떠나는 걸 알림 SocketIO에는 당연히 우리가 명명한 이벤트 말고도, 다양한 이벤트가 있다. 그 중 하나가 disconnecting 이거는 disconnect와 다르다. 말 그대로 연결을 끊는 '중'이다. 그러니까 왜, 완전히 끊어버리면 뭔갈 못하니까, 완전히 끊기 전에 하고 싶은 거 날리는 그런 거다. io.on("connection", socket =>{ socket.on("disconnecting", ()=>{ socket.rooms.forEach(room => socket.to(room).emit("bye")); }) }) 추가로 등록해 줬다. socket이 연결을 끊고 있을 때, 그 소켓이 가입했던 모든 방에다가 "bye"라는 이벤트를 날린다. 그러면, socket.on("bye",()=>{..

실시간/Socket IO 2023.10.31

4. 방 만들기

이 room 기능, 그러니까 특정 소켓끼리 묶는 이 기능을 이미 socketIO는 제공해 준다. 굉장히 쉽다. 그냥 socket.join("방이름") 해주면 끝이다. https://socket.io/ Socket.IO Reliable Rest assured! In case the WebSocket connection is not possible, it will fall back to HTTP long-polling. And if the connection is lost, the client will automatically try to reconnect. socket.io 여기 ServerAPI, ClientAPI에서 공식 문서 확인할 수 있다. socket.onAny(e=>{ console.log(`s..

실시간/Socket IO 2023.10.31

형제끼리 값 다루기

이건 어쩔 수 없음. 부모를 통해서 가야 함. function App() { const [count, setCount] = useState(0); const handlerCount = (value)=>{ setCount(count+value); } return ( ); } 이렇게 하고 function Viewer({count}) { return ( 현재 카운트 {count} ); } 뷰에서는 저렇게 그냥 그대로 쓰면 되고. 이미 useState() 상태로 들어온 거라 (아마?) function Controller({handlerCount}) { return ( {handlerCount(-1)}}>-1 {handlerCount(-10)}}>-10 {handlerCount(-100)}}>-100 {handl..

React 2023.10.31

useRef

html 요소랑 이을 수 있음. function Main() { const [text, setText] = useState(''); const textRef = useRef(); const handleChange = (e) =>{ setText(e.target.value); console.log(textRef.current); } const handleClick = ()=>{ console.log(text); textRef.current.value = ""; } return ( 버튼 ); } export default Main; 저렇게 태그에 ref={정의한ref} 하고 ref에 접근할 때는 ref.curret로 접근해야 요소가 나옴. 난 직관적인거 좋아해서 그러면 useRef만 쓰면 저렇게 저 요소에 ..

React 2023.10.31