본문 바로가기

Java, Kotlin, Spring111

자바개발자가 보기에 Kotlin 에서 좋아보이는 것들 - 1 자바개발자가 보기에 Kotlin 에서 좋아보이는 것들 - 1 1) 기본 타입(Basic Types) 숫자(Numbers) Byte(8 bits), Short(16), Int(32), Long(64) Float(32), Double(64) 자바에서 숫자 타입은 primitive, wrapper 타입으로 나뉘어있다. 보통은 primitive 를 쓰고, 콜렉션이나 제네릭 안에 사용되는 타입으로 wrapper 타입을 많이 사용한다. 혹은 null 필요할 경우도 wrapper 를 사용한다. (혹은 그냥 모두 wrapper 로 통일한다.) 코틀린에서는 이런 고민없이 타입이 모두 wrapper 이다. 컴파일러가 가장작은 범위의 타입으로 값을 자동으로 암시해준다. val three = 3 // Int val three.. 2022. 10. 13.
Kotlin 서버 개발하기 2 Kotlin 서버 개발하기 2 Pomodoro 최근에 알게 된 공부/일 집중 방법으로 '뽀모도로' 기법이 있습니다. 쉽게 말해 25분 공부하고, 5분 쉬는 것인데요. 실제 타이머로 25분을 재면서 어떤 일에 몰두하면, 생각보다 집중이 잘 되서 효과를 볼 수 있습니다. 특히, 25분이 끝나올 때 다급해지는 마음에 더 집중이 잘 되기도 합니다. 뽀모도로 기법은 이 포모도르를 4번 시행하면 1시간이 채워지는데, 이 때는 5분보다 좀 더 긴 휴식 시간을 가지길 권장합니다. 이렇게 한 싸이클이 끝나면, 다음 목표를 향해 다음 싸이클을 반복하면 됩니다. 지금 이 블로그 글쓰기 역시 뽀모도로 기법을 통해 집중해서 진행하고 있습니다. 이번 프로젝트는 뽀모도로 기법을 통한 자기 관리 앱을 만들 것 입니다... 2022. 9. 30.
Kotlin 서버 개발하기 1 Kotlin으로 서버 개발하기 1 개발하다보면 조금 더 간결한 표현 방법은 없는지 많이 고민하게 됩니다. 나도 동료도 코드를 더 쉽게 읽을 수 있다면 덜 피곤해지기 때문이죠. 이번 글에는 코틀린 서버 개발 세팅을 진행합니다. 프로젝트를 만들면서 진행합니다. 1. 프로젝트 생성 인텔리제이 Ultimate 버전입니다. 무료로 진행하려면 https://start.spring.io/ 에 방문하셔서 zip 파일 형태로 프로젝트를 생성할 수 있습니다. 언어: kotlin, Java 17 빌드 및 의존성 도구: gradle 2. 의존성 추가 리액티브 웹 앱 생성을 위해 아래의 의존성을 추가합니다. 리액티브로 웹 앱 간단한 예제 프로젝트입니다. (Web MVC 로 하셔도 됩니다.) 이 글의 초점은 코틀린을 활용한 웹 .. 2022. 9. 28.
일대다(1:N) 페이징 처리(OneToMany Pagination) 일대다(1:N) 페이징 처리(Spring Data JPA) TL;DR 1:N 연관관계인 두 엔티티가 즉시 로딩된다면 (엔티티 그래프나 fetch join 으로 연결되어 있다면) 페이징 처리시 쿼리에 limit 가 붙지 않고 모든 데이터가 메모리에 불러와진다. 페이징 처리를 위해서는 연관된 컬렉션을 한꺼번에 가져올 배치 사이즈를 정한다. (예시: 100개로 정하기) spring: jpa: properties: hibernate: default_batch_fetch_size: 100 요구사항 어드민 화면에서 모든 사용자의 주문내역을 불러오는 화면이 필요합니다. 우리는 수많은 주문들을 한 화면에 불러오기 보다는 페이징 처리를 통해 한번에 필요한 갯수만큼 가져오겠습니다. Entity 연관관계 주문과 주문상품이 .. 2021. 11. 28.
JPA - 기본키 생성 전략 JPA - 기본키 생성 전략 관계형 데이터베이스에서 테이블은 각각의 행을 구별하는 기본키가 필요하다. 기본키를 만들 때는 주민등록번호, 주문번호 같은 '자연키' 를 사용할 수도 있고, 논리적 의미가 하나도 없는 하나씩 증가하는 순번 같은 '대체키'를 사용할 수도 있다. 기본키로 어떤 것을 선택하면 좋을까? 주문번호 관련 생성 정책이 변경되거나 주민등록번호를 더 이상 저장하면 안된다는 정책이 생기는 등 자연키는 기본키로 정할 수 있는 올바른 전략이 아닐 수도 있다. 상황에 따라 다르겠지만 대체키를 권장한다. 대체키를 사용하고자 할 때는 Integer 타입 (약 10자리수, 21억 정도까지 표현) 대신 Long 타입 (약 19자리, 9백경 정도까지 표현)을 사용하여 표현 범위를 .. 2021. 9. 26.
JPA - 연관관계 매핑(N:1, 1:N, 1:1, N:N) JPA 005 - 다양한 연관관계 매핑 다대일, 일대다, 일대일, 다대다 매핑을 알아보자. (앞에 있는 객체가 외래키를 가지는 연관관계 주인이라고 가정한다.) 1. 다대일 (N:1) 저번시간에 JPA - 단방향, 양방향 연관관계 매핑 글에서 Comment (N) - Post (1) 관계에서 연관관계 주인을 Comment로 선택하여 외래키를 Comment가 관리하게 하는 예제를 보았다. 다대일 관계는 이를 말한다. 될 수 있으면 단방향 관계만 설정하고, 반대편 (Post) 에서도 조회하고 싶다면 양방향 관계를 추가하고 양방향 매핑을 주의해서 관리해주면 된다. 2. 일대다 (1:N) 일대다 단방향 매핑 일대다 관계는 자바 컬렉션(Collection, List, Set, Map) 중 하나를 사용해서 참조할 객.. 2021. 9. 21.
JPA - 단방향, 양방향 연관관계 매핑 JPA 004 - 단방향, 양방향 연관관계 매핑 TL;DR 두 테이블이 있고, 한 테이블에 외래키가 있는 상황에서 테이블은 항상 양방향 관계를 가진다. A 객체 안에 B 객체가 필드로 있다면, A에서 B로 가는 단방향 관계를 가진다. 단방향 관계만으로 충분히 연관관계 매핑을 할 수 있다. 아래 예제에서 Post 에 있는 @OneToMany 는 사실 없어도 잘 동작한다. 외래키는 @ManyToOne 이 붙은 Comment 에 자연스럽게 생긴다. 반대방향으로도 조회하고 싶으면 양방향 관계를 설정하자. (반대 방향의 객체 그래프 탐색이 가능해진다.) 대신에, 연관관계 편의 메소드 등을 만들어서 양방향 매핑을 모두 잘해주고, 논리적으로 오류가 없도록 관리를 잘 해주어야 한다. 단방향, 양방향? 테이블 vs 객체.. 2021. 9. 20.
JPA - 상속 객체와 테이블 매핑 JPA 006 - 상속 객체와 테이블 매핑 객체는 상속을 통해 공통된 필드를 부모클래스에 만들고, 나머지 필드를 각 자식클래스에 둘 수 있다. 하지만, 관계형 데이터베이스에는 상속의 개념이 없다. 대신 슈퍼타입-서브타입 모델링 기법을 사용할 수 있다. ORM 은 객체의 상속과 데이터베이스의 슈퍼타입-서브타입 관계를 매핑한다. JPA 에서는 객체와 테이블을 매핑할 때 3가지 전략을 제시한다. 1 Joined 전략 부모테이블과 자식테이블 각각을 모두 생성하고, 원하는 데이터를 조인해서 가져온다. 각 자식테이블은 부모와 같은 PK 를 가지면서, 이 PK는 부모의 PK와 관계를 맺는 FK 가 된다. @Entity @Inheritance(strategy = InheritanceType.JOINED) public .. 2021. 9. 19.
Spring Security 로그인 구현 (part 3) - OAuth2.0 Spring Security 로그인 구현 (part 3) - OAuth2.0 지난 시간까지는 Form 로그인에 대해서 ( Spring Security 로그인 구현 (part1) - form login, Spring Security 로그인 구현 (part1) - form login ) 알아보았습니다. 하지만 우리가 자주 사용하는 로그인의 또 다른 방식으로 OAuth 로그인이 있습니다. 구글 같은 소셜서비스를 이용해 대신 로그인을 해서 서비스를 사용해본 적이 있으신가요? 어떤 앱서비스에 가입할 때 이렇게 제 3자의 로그인 서비스를 이용하는 것은 크게 3가지 장점이 있습니다. 사용자는 회원가입을 새로 하지 않고, 신뢰할 수 있는 구글같은 서비스로 로그인하니 편리하다. 사용자는 자신의 민감정보를 서버에 건네주지.. 2021. 5. 9.
OAuth 2.0 설명 OAuth2.0 OAuth란? 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다. (wikipedia) 즉, 서비스별 제각각인 인증방식을 표준화한 인증방식이다. 다르게 표현하면 서드파티를 사용하지 않고, API 에 접근할 수 있도록 하는 개방형 표준 프로토콜이다. OAuth 사용 사례 구글, 페이스북과 같은 서비스 API 에 사용자 대신 접근하고 싶을 때 다른 서비스로 로그인 하기 기능을 구현하고 싶을 때 이제 대략 6단계에 거쳐서 OAuth 의 인증절차를 차근차근 알아보자. 1. OAuth 2.0 용어 정리 사용자 (Resource Owner) : 애플.. 2021. 5. 9.
728x90