JAVA

· JAVA/JPA
복합키란? 복합 키(Composite Key)는 두 개 이상의 PK를 하나로 PK로 지정하는 것을 말한다. 이러한 복합키를 가지고 있는 논리 모델은 식별 관계와 비식별 관계로 구분되어 사용한다. 식별 관계 부모테이블의 기본키를 상속 받고 자식 테이블의 기본키 + 외래키의 구조로 사용되는 구조 입니다. 비식별 관계 비식별 관계는 부모 테이블의 기본키만 받아서 자식 테이블의 FK로 사용하는 것이 비식별 관계입니다. 이러한 관계는 FK가 Null이냐 아니냐에 따라서 필수적 비식별 관계와 선택적 비식별 관계로 구분되어집니다. JPA는 이러한 식별, 비식별 관계를 모두 제공합니다. JPA에서의 복합키 JPA에서는 아래와 같은 두개의 식별자를 사용하려면 오류가 발생하기 때문에 별도의 식별자 클래스를 만들어야합니다...
· JAVA/JPA
데이터 베이스에서 상속 관계 관계형 데이터베이스에서는 상속이라는 개념이 존재하지 않는다. 그래서 보통 슈퍼타입과 서브타입으로 분리시키는 방식으로 구현을 한다. 이러한 논리 모델을 구현하기 위해서는 세가지 방법이 존재하는데 각각 방법에 대한 장점과 단점을 알아보자 조인전략: 각각의 테이블로 변환 각각의 논리 모델을 모두 테이블로 만들고 부모테이블의 PK를 받아서 기본키와 외래키를 통해 사용하는 전략이다. 해당 방법을 사용할 때 주의할 점은 객체에서는 타입으로 구분할 수 있지만 데이터베이스에는 그런 개념이 없기 때문에 타입을 구분하는 전략을 사용해 주어야한다. Table 구조 Entity 구조 부모 클래스(Product) @Entity @Inheritance(strategy = InheritanceType...
· JAVA/JPA
JPA를 공부하다가 1:1 관계에서는 FetchType.LAZY 를 사용해도 지연 로딩이 되지 않고 바로 객체를 불러온다고 한다. 책에 있는 내용을 통해 해당 링크를 찾아봤지만 어떠한 원리로 일어나고 해결방법은 어떤 것이 있는지 알고 있어야 실무에 실제로 사용할 때 주의할 수 있을 것 같다. 발생 원인 class A { private Set bees; public Set getBees() { return bees; } public void setBees(Set bees) { this.bees = bees; } } class B { // Not important really } 보통 하이버네이트에서 프록시객체를 생성할 때 위와 같은 클래스 구조가 있고 하이버네이트가 Class A를 호출하게 되면 일단 초기..
JWT Authentication Flow HTTP는 connectionless, stateless한 성질을 가지고 있는 프로토콜 입니다. 그렇기에 유저 인증이 필요한 경우 인증이 필요할 때 마다 로그인을 할 수 없으므로 토큰이나 세션을 통해 유저 인증 상태를 관리하게 되는데 그중 가장 널리 사용되는 JWT 토큰 전략을 스프링 시큐리티 활용하여 사용방법과 동작과정을 정리한 글입니다. 1. 유저 정보를 자바에서 Validation을 활용하여 유저 정보를 체크하고 H2 데이터 베이스에 저장을 합니다. 2. 스프링 시큐리티를 통해 유저 로그인 정보를 인증하고 토큰을 발급 받습니다. 3. 스프링 시큐리티를 통해 전달 받은 토큰을 통해 인가 과정을 거친 후 서비스 로직을 동작하도록 합니다. 스프링 시큐리티가 있는..
· JAVA
자바에서 실수 표현 하는 방법 정수 제공하는 실수형 데이터 타입에는 float과 double이 있다. 정수형 int, long 타입과 동일하게 각 4, 8 바이트의 메모리 공간을 활용하지만 실수를 가수와 지수부분으로 나누어 표현하는 부동 소수점 방식을 기반으로 더 넓은 범위의 값을 표현 할 수 있습니다. 컴퓨터는 실수도 2진수로 표현하기 때문에 두가지 방법으로 상대적으로 꽤 복잡하게 동작하게 됩니다. 실수를 표현하는 방식으로는 고정 소수점 방식(Fixed-Point Number Representation)과 부동 소수점 방식(Floating-Point Number Representation)으로 나뉘어 사용이 됩니다. 고정 소수점 방식 고정 소수점 방식(Fixed-Point Number Represent..
npm을 통해 express를 다운로드하고 express 프로젝트를 생성하면 아래와 같은 구조로 생성하게 되는데 프로젝트를 진행하기 전에 각각 무슨 역활을 하는지 알아 보고자한다. 프로젝트 구조 ├── app.js ├── bin │ └── www ├── package.json ├── public │ ├── images │ ├── javascripts │ └── stylesheets │ └── style.css ├── routes │ ├── index.js │ └── users.js └── views www express의 핵심파일로 아래와 같이 구성되어 있다. var app = require('../app'); var debug = require('debug')('learn-express:server')..
ri5
'JAVA' 카테고리의 글 목록 (2 Page)