HOME

    WebSocketSession에서 HttpSession를 얻는 방법

    개발 환경 JDK : Oracle JDK 1.8 WS : Apache 2.4 WAS : Apache Tomcat 9 웹 소켓을 이용해 채팅 프로그램을 만들었는데, 채팅 UI에서 사용자 이름을 표현하거나 채팅 로그를 남길 때 HttpSession에 저장해둔 로그인 사용자 정보를 이용하고 싶어서 구현해보았습니다. 우선 알아두어야할 것은 아래와 같습니다. 웹 소켓 세션과 서블릿 세션은 다릅니다. 때문에, 웹 소켓 세션에서 우리가 흔히 이야기하는 세션(HttpSession)에 접근할 수가 없습니다. 00. 사전 준비 우선 Apache에 웹 소켓 통신을 위한 세팅을 해주어야합니다. 아파치 설치경로/conf/httpd.conf 파일을 열어 아래 모듈들을 로드해주세요. 아마 대부분 작성이 되어있고 주석을 해제하시면 ..

    [JPA] 즉시 로딩/지연 로딩

    [JPA] 즉시 로딩/지연 로딩

    앞선 포스팅에서 프록시에 대해 알아보았습니다. 이번 포스팅에서는 JPA에서 프록시를 어떻게 활용하는지, 즉시 로딩과 지연 로딩을 통해 알아봅니다. 지연 로딩 (Lazy Loading) 1 2 3 4 5 6 7 8 9 @Entity public class Member { @Id @GeneratedValue private Long id; @ManyToOne(fetch=FetchType.LAZY) private Team team; } Colored by Color Scripter cs 지연 로딩은 엔티티 조회 시점이 아닌 엔티티 내 연관관계를 참조할 때 해당 연관관계에 대한 SQL이 질의되는 기능이며, fetch=FetchType.LAZY 옵션으로 지정할 수 있습니다. 엔티티 조회 시, 연관관계 필드는 프록시..

    [JPA] 프록시

    [JPA] 프록시

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 @Entity public class Member { @Id @GeneratedValue private Long id; private Team team; } @Entity public class Team { @Id private Long id; } cs 이런 연관관계의 엔티티가 존재할 때, 아래 상황을 가정해보겠습니다. Case 1. Member와 Team을 함께 출력하는 비즈니스 로직이 추가되었다. 이 때는 아래와 같이 로직을 구현할 수 있겠습니다. JPA에서 Member 조회 시, 자동으로 Team까지 함께 조회해오므로, EntityManager.find 호출 시에 Member와 Team을 조인해서 가져오는 SELECT 쿼리를 수행..

    [JPA] 상속관계 매핑

    [JPA] 상속관계 매핑

    상속관계 매핑 RDBMS에는 상속관계가 없지만, 객체에서는 상속관계가 존재합니다. 그리고 RDBMS에서는 슈퍼타입-서브타입 관계 모델링이 객체의 상속관계와 유사합니다. 이번 포스팅에서는 이 슈퍼타입-서브타입 관계를 JPA로 모델링하는 방법을 알아봅니다. 이 슈퍼타입-서브타입 논리 모델을 실제 물리 모델로 구현하려면 아래와 같은 방법이 있습니다. 조인 전략 : 각각 테이블로 변환 단일 테이블 전략 : 통합 테이블로 변환 구현 클래스마다 테이블 전략 : 서브타입 테이블로 변환 그리고 이 상속관계 매핑시에는 Entity를 대상으로 어노테이션을 입력해주는데, 슈퍼 타입(슈퍼 클래스)에는 @Inhritance와 @DiscriminatorColumn을, 서브 타입(서브 클래스)에는 @DiscriminatorValu..

    [JPA] 다양한 연관관계 매핑

    [JPA] 다양한 연관관계 매핑

    연관관계 매핑 시 고려사항 다중성 단방향 or 양방향 연관관계의 주인 다중성 N:1 → @ManyToOne 1:N → @OneToMany 1:1 → @OneToOne N:M → @ManyToMany 단방향 or 양방향 테이블 외래 키 하나로 양쪽 JOIN 가능 사실 방향이라는 개념은 없다. 객체 참조용 필드가 있는 쪽으로만 참조 가능 한쪽만 참조하면 단방향 양쪽이 서로 참조하면 양방향 연관관계의 주인 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺는다. 객체의 양방향 관계는 참조가 각각 존재하므로, 둘 중 테이블의 외래 키를 관리할 객체를 지정해야한다. 연관관계의 주인 → 외래 키를 관리하는 참조 주인의 반대편 → 외래 키에 영향을 주지 않고, 단순 조회만 가능함. 다대일 N:1 가장 많이 사용하는 ..

    [JPA] 양방향 매핑시 주의점과 연관관계 편의 메서드

    [JPA] 양방향 매핑시 주의점과 연관관계 편의 메서드

    이번 포스팅에서는 양방향 매핑 시 주의해야할 점과 연관관계 편의 메서드 작성 방법에 대해 알아보겠습니다. 아래 이미지와 같이 Member와 Team 엔티티를 양방향 매핑했을 경우를 가정해 설명합니다. 들어가기 전에 위 연관관계에서 연관관계의 주인은 누구일까요? 바로 Member입니다. MEMBER 테이블에서 TEAM_ID라는 외래키를 갖고있기 때문이죠. 그렇다면 Member와 Team 엔티티에서 각각 team, members 변수는 어노테이션을 어떻게 선언해야할까요? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 @Entity public class Member { ... @ManyToOne @JoinColumn(name = "TEAM_ID") private ..

반응형