본문 바로가기

[kotlin] JPA 7: Spring Boot에서 JPQL과 @Query 들어가기Repository를 사용해 쿼리 메소드로 어느정도 데이터 처리하는데 문제는 없지만 정교하고 복잡한 처리를 할 경우 한계가 있다. 이런 한계를 JPQL을 사용해서 다양한 쿼리를 실행할 수 있다. Spring Data에서 @Query을 사용해서 쉽게 JPQL을 사용할 수 있도록 만들어준다. 사전에 Ansi SQL 학습을 권장한다.작성자: http://ospace.tistory.com/ (ospace114@empal.com)환경 구성앞으로 사용할 엔티티는 총 3개로 아래와 같이 구성된다... 더보기
[kotlin] JPA 6: Spring Boot에서 Repository 활용 들어가기 데이터베이스에서 데이터를 조회하거나 저장하기 위해서 연동해주는 객체가 필요하다. 이를 리포지토리라고 한다. 일반적인 리포지토리이면 실제 데이터베이스에 데이터를 저장하거나 조회하기 위한 JDBC를 사용하거나 라이브러리 사용할 경우 쿼리를 작성해 줘야한다. 그러나 JPA에서는 더 쉽게 자동으로 처리해준다. 어떻게 할 수 있는지 살펴보자. 작성자: http://ospace.tistory.com/ (ospace114@empal.com) 리포지트리 구조 Spring Data에서 리포지토리를 위한 Repository 인터페이스를 제공한다. 이 인터페이스를 통해 데이터베이스와 연동된다. 아래는 Spring Data JPA에서 제공되는 Repository의 상속 트리 구조이다. Repository 인터페이스를.. 더보기
[kotlin] JPA 4: Spring Boot에서 Entity 연관관계 들어가기 엔티티는 여러 개가 존재하고 엔티티 간에 관계가 존재하다. 이런 관계는 대부분 데이터베이스 기준으로 ER 다이어그램에서 카디널리티(cardinality)에 해당한다. 결국 데이터베이스에 테이블 간에 관계를 엔티티로 매핑하는 방식을 기술한다. 이런 엔티티 간에 관계를 연관관계라고 한다. 작성자: http://ospace.tistory.com/ (ospace114@empal.com) 샘플 아래는 샘플로 사용할 엔티티 클래스 다이그램이다. 사용자가 서비스에 가입하고 게시물을 관리하기위한 구조이다. 앞으로 다룰 엔티티 연관관계를 다루기 위해 만든 샘플이므로 참고만 하시기 바란다. 연관관계 관계는 다중성과 방향을 알아야 한다. 다중성은 두 대상이 서로 1:1, 1:N, N:M 관계인지를 의미한다. 방향은.. 더보기
[kotlin] JPA 3: Spring Boot에서 Entity 매핑 확장 들어가기 이번에는 엔티티 정의위한 확장된 어노테이션에 대해서 다룰려고 한다. 더 다양한 타입과 알아두면 좀더 도움이 되는 어노테이션에 대해서 다룰 예정이다. 작성자: http://ospace.tistory.com/ (ospace114@empal.com) 엔티티 정의 엔티티 정의를 위한 추가적인 어노테이션이다. @Enumerated: enum 타입 매핑 @Temporal: 날짜 타입 매핑 @Transient: 매핑 무시 @Lob: BLOB CLOB 타입 매핑 @CreationTimestamp: insert 시간 자동 저장 @UpdateTimestamp: update 시간 자동 저장 @CreateDate: 엔티티 생성시간 @LastModifiedDate: 엔티티 변경시간 @CreatedBy: 엔티티 생성 사.. 더보기
[kotlin] JPA 2: Spring Boot에서 Entity 매핑 기본 들어가기 엔티티(Entity)에서 세부적인 정의를 살펴볼려고 한다. 먼저 엔티티 자체 정의하는 방법을 살펴보자. 엔티티와 데이터베이스 테이블과 매핑하는 방법을 위주로 먼저 살펴볼려고 한다. 작성자: http://ospace.tistory.com/ (ospace114@empal.com) 엔티티 정의 엔티티 정의를 위한 기본 어노테이션으로 다음과 같다. @Entity: 엔티티 선언 @Table: 매핑할 테이블 선택 @Id: 테이블 기본키 사용할 속성 지정 @GeneratedVaue: 키값 생성 전략 @Column: 매핑할 컬럼 선택 이미 몇 개는 앞에서 보았던 어노테이션도 있다. @Entity 어노테이션 엔티티를 지정할때 사용하는 어노테이션이다. 데이터베이스 테이블에 매핑할 엔티티를 정의한다. 에티티를 지정.. 더보기
[kotlin] JPA 1: Spring Boot에서 간단한 CRUD 들어가기 Spring Boot 기반의 Spring Data JPA를 사용하여 API 서버 구축할려고 한다. 복잡한 JPA 개념을 건너뛰고 바로 Spring Boot에서 기본적인 CRUD 부터 시작해보자. 작성자: http://ospace.tistory.com/ (ospace114@empal.com) 기본환경 먼저 kotlin과 Spring Boot에서 Maven 빌더를 사용한다고 가정하겠다. 기본적인 Spring Boot 프로젝트가 구성되었다면 아래와 같은 dependency을 추가해줘야 한다. org.springframework.boot spring-boot-starter-data-jpa com.h2database h2 spring-boot-starter-data-jpa에 의해서 기본적인 JPA 관련 .. 더보기
[java/kotlin] Spring Boot에서 웹소켓 사용하기 들어가기 웹소켓(websocket)은 브라우저와 웹서버 간에 통신을 할 수 있는 채널을 만드는 기술이다. 기존 HTTP을 사용하는 경우 데이터를 송수신할 때마다 매번 연결하고 끊어지는 작업이 반복된다. 웹소켓은 계속 연결된 상태로 유지되기 때문에 데이터를 더 효율적으로 처리할 수 있다. 웹소켓도 사용하기 위한 자신만의 규약이 있지만 Spring Boot에서 웹소켓을 쉽게 사용하는 방법이 있다. 작성자: http://ospace.tistory.com/ (ospace114@empal.com) 웹소켓이란? 웹소켓은 양방향 통신하는 프로토콜(RFC6455)이다. 웹소켓은 80과 443위에서 HTTP 프로토콜과 호환되도록 동작한다. 기존 HTTP 폴링에 비해 부하가 낮고 푸시 방식의 실시간 데이터 전송가능하다. .. 더보기
Kotlin 배우기2 - 심화 들어가기 심화에서는 kotlin만의 특징적인 기능과 추가적인 부분을 정리했다. 작성자: ospace114@empal.com, http://ospace.tistory.com/ 연산자 “?.” 연산자를 사용해서 객체가 null아닌 경우만 참조할 수 있다. fun main() { var str:String? = null var len = str?.length println("length is $len") }“?:(elvis)” 연산자를 사용해서 객체가 null인 경우 기본값을 정의할 수 있다. fun main() { var str:String? = null var len = str?.length ?: 0 println("length is $len") }“!!.” 연산자를 사용해 객체가 절대 null이 되면 안.. 더보기

반응형