home (268) 썸네일형 리스트형 Spring Boot JPA ID IDENTITY 스프링 부트 JPA에서 테이블 기본키가 AUTO INCREMENT인 경우 매핑하는 방법입니다. PostgreSQL에서 예제로 만든 직급 테이블입니다. PostgreSQL에서 AUTO INCREMENT을 지원하는 타입은 serial입니다. serial 타입의 기본키를 매핑하려면 즉 기본키가 데이터베이스로부터 생성되는 경우라면 @GeneratedValue 어노테이션을 사용해야 합니다. @GeneratedValue 어노테이션의 strategy 속성값을 GenerationType.IDENTITY으로 해야 합니다. GenerationType.IDENTITY 전략은 데이터를 추가한 다음에 기본키 값을 알 수 있습니다. 직급 엔티티를 추가했을 때 기본키 생성이 제대로 되는지 확인하기 위해서 코드를 작성합니다. 컨트롤.. Spring Boot JPA Join 스프링 부트에서 JPA를 통해 테이블 join을 구현하는 것은 DB 외래키로 하는 것과 많이 다릅니다. DB는 외래키 하나로 테이블 양방향 참조가 가능하지만 JPA는 테이블을 객체로 매핑하기 때문에 추가로 작업을 해야 합니다. 예제로 만든 직원 테이블과 출퇴근 테이블입니다. 출퇴근 테이블의 employee_id 컬럼이 직원 테이블의 id 컬럼을 참조하고 있습니다. 출퇴근 테이블과 직원 테이블은 다대일 양방향 관계이기 때문에 출퇴근 테이블이 참조키를 가지고 있고 연관관계의 주인입니다. 출퇴근 엔티티 클래스가 외래키 필드를 가지고 있고, 연관관계 주인임을 나타내고 있습니다.(32~35라인) 출퇴근 엔티티와 직원 엔티티는 서로 참조할 수 있도록 연관관계 편의 메소드 setEmployee를 작성합니다.(53~6.. Spring Boot JPA 복합키 스프링 부트에서 JPA를 통해 테이블의 기본키가 복합키인 경우 구현하는 방법입니다. 예제로 만든 급여 테이블의 DDL입니다. 기본키가 직원 아이디와 급여 날짜로 구성되어 있습니다. salary와 status 컬럼은 급여액과 급여 상태를 각각 가리키고 있습니다. 복합키를 구현하는 방법은 @IdClass와 @EmbeddedId 2가지를 통해서 할 수 있는데 저는 @EmbeddedId를 사용해서 구현했습니다. 식별자 클래스 코드에 대해 설명하면 @Data 어노테이션을 통해 lombok 라이브러리를 통해 getter, setter, toString 메소드 등을 자동 생성합니다.(15라인) @NoArgsConstructor 어노테이션으로 기본 생성자를 생성합니다.(16라인) @Embeddable 어노테이션으로 해.. Spring WebSocketSession 스프링에서 웹 소켓을 사용할 때 broadcast 방식을 사용하는 경우가 많습니다. broadcast 방식이란 현재 서버에 접속한 모든 클라이언트에게 메시지를 전달하는 것을 뜻합니다. 하지만 특정 클라이언트에게 메시지를 전달해야 하는 경우 WebSocketSession을 사용해야 합니다. 예제 코드를 설명하게 되면 클라이언트의 웹 소켓 세션을 저장하는 sessionList를 생성합니다.(19라인) 클라이언트가 웹 소켓 서버에 접속한 경우 sessionList에 추가합니다.(21~25라인) 클라이언트가 웹 소켓으로 서버에 메시지를 보낸 경우, 송신한 클라이언트에게만 메시지를 다시 전송합니다.(27~44라인) 클라이언트의 웹 소켓 접속이 끊긴 경우 해당 클라이언트의 세션을 sessionList에서 제거합니다.. Spring Boot Jasypt 스프링 부트 프로젝트에서 DB 접속 정보 같은 민감한 정보를 암호화하지 않는다면 보안에 위험할 수 있습니다. 암호화 라이브러리로 Jasypt를 많이 사용하는데 스프링 부트에 적용하겠습니다. pom.xml에 Jasypt 라이브러리를 추가합니다. Jasypt 라이브러리 암복호화 설정을 담당하는 클래스를 생성하고 bean으로 등록합니다. 이 코드에서 주의 깊게 봐야 되는 부분은 19라인입니다. 암복호화에 사용되는 비밀키를 OS 환경변수에서 가져옴으로써 보안성을 강화했습니다. 혹시 환경변수에 있는 값을 못 읽으면 재부팅 한번 하시기 바랍니다. 나머지 코드에 대한 설명은 아래에서 확인하시면 됩니다. 11라인: 스프링 부트 프로젝트에서 설정을 역할을 하는 클래스를 나타내는 어노테이션 12라인: Jasypt 라이브러.. Spring Naver Editor 이미지 업로드 스프링에서 네이버 에디터 이미지 첨부할 때 jsp에서 처리하는 대신에 서버를 통해서 이미지를 첨부하는 방법이 있습니다. attach_photo.js 파일 html5Upload 함수의 이미지 업로드 경로(sUploadURL)를 서버(/uploadEditorImg.do)로 수정합니다. 클라이언트의 이미지 업로드 요청을 컨트롤러가 받아서 서비스로 전달한 뒤 이미지 저장 경로를 response 객체로 출력합니다. 컨트롤러부터 이미지 업로드 요청을 서비스가 처리합니다. 해당 서비스 코드를 간략히 설명하면 먼저 이미지 확장자를 검사합니다.(29~44라인) try-resource를 통해 이미지를 서버 특정 경로에 저장합니다.(45~56라인) 서버에 저장된 이미지 경로를 리턴하는데, 이 경로는 이미지 업로드가 끝나고 .. Spring Boot Logback 스프링 부트에서 로그를 기록할 때 주로 logback을 사용합니다. 먼저 pom.xml에 logback 관련 디펜던시 logback-classic과 logback-core가 있는지 확인합니다. 만약 logback 디펜던시가 없으면 직접 추가해야 합니다. src/resources 디렉토리 밑에 logback-spring.xml 파일을 생성합니다. logback.xml 파일을 생성해도 되지만 스프링 application.yml파일에 있는 로그파일 디렉토리와 로그파일 이름을 참조하기 위해 logback-spring.xml 파일을 생성했습니다. logback-spring.xml 파일에 대한 내용은 아래와 같습니다. 3~4라인: springProperty 태그를 사용하여 application.yml 파일에 있는 .. ElasticSearch 집계 쿼리 엘라스틱서치는 REST API를 통해 데이터 집계 결과를 조회할 수 있습니다. 위의 집계 쿼리 예제를 설명하면 1라인: GET 메소드를 통해 metro 인덱스 검색, size값을 0으로 설정해 집계된 문서 정보 조회 X 3라인: 집계 수행 4라인: 집계 이름 설정 5~7라인: metro_line 필드 기준으로 그룹화 집계, 버킷 집계 8~14라인: 버킷 집계 결과를 기준으로 total_number 합산 집계, 메트릭 집계 DB 쿼리로 비유하면 select sum(total_number) as total_number from metro group by metro_line 와 비슷하다고 할 수 있습니다. 버킷 집계에 지하철 노선명 기준으로 오름차순 정렬할 수 있습니다. DB 쿼리로 비유하면 select su.. 이전 1 ··· 4 5 6 7 8 9 10 ··· 34 다음