spring3 (Spring) Stomp로 채팅 동시접속자 구현해보기 팀 프로젝트에서 채팅에 동시접속자를 데이터를 실시간으로 보내달라는 요청이 왔다. 동시접속자를 어떻게 실시간으로 보내야할까.. 많은 고민을 했고 구글링을 해봤는데 자료가 거의..없었다. 생각해본 문제는 이정도였다. 1. 실시간으로 빠르게 바뀌는 데이터다 보니 웹소켓으로 전달해줘야 한다. 2. 일단 소켓에 연결된 세션의 수를 알아내야한다. 3. 접속자가 새로 들어올 때와 기존 접속자가 나갈 때마다 데이터를 전달해야한다. 1. 실시간으로 빠르게 바뀌는 데이터다 보니 웹소켓으로 전달해줘야 한다. 1번의 경우는 이미 소켓에 연결되어있는 상태이기 때문에 새 subscribe 채널만 제공해주면 된다. function connect() { var socket = new SockJS('http://localhost:80.. spring 2022. 9. 10. Jpa 연관관계 정리 연관관계를 매핑한다? 일반적으로 DB에서 테이블의 연관관계를 매핑할 땐 외래키를 사용하고 양방향관계를 사용한다. select * from team t join member m on t.team_id = m.team.id; select * from member m join team t on m.team.id = t.team_id; 이와 같이 하나의 외래키로 양방향 매핑이 되어 양방향 조회가 가능하다. 하지만 ORM에서 객체는 참조를 사용하여 매핑하고 방향성이 존재한다. @Entity() @Table(name = "MEMBER") public class Member { @Id @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) p.. jpa 2022. 8. 22. ORM과 JPA 개념정리 ORM (Object Relation Mapping)란 무엇일까? 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해 주는 것을 말한다. database와 OOP를 둘 다 잘 알고 있어야 한다. 기존 database SQL을 직접 다룰 때의 문제점 코드의 반복이 발생함, 예를들어 insert into(...) ... 계속 반복 SQL에 의존적인 개발을 하게됨. 로직을 쿼리로 처리하게 되는 경우가 생김. 쿼리가 길어지면 가독성도 떨어지고 무엇보다 테스트를 하려면 쿼리를 날려야한다.. 유지보수성 - 테이블에 변경이 있다면, 연관된 모든 쿼리를 변경해줘야 함. 특정 db벤더사에 의존하게 됨. DB종류마다 약간 씩 문법도 다른 경우가 존재. 중간에 DB를 바꾸게되면 골치아픔. ORM과 RDB의 차이 ORM R.. jpa 2022. 8. 15. 이전 1 다음