전체 글 55

브라우저의 web storage

웹 스토리지: 브라우저에 데이터를 저장할 수 있는 기술 Session Storage 1. key-value 값으로 저장된다. 2. 로컬 환경 데이터에 저장된다. 3. 세션 단위로 구분되어 활용된다. *세션: 사용자가 브라우저를 통해 웹 페이지에 접속한 시점부터 종료하는 시점까지를 의미 Local Storage 1. key-value 값으로 저장된다. 2. 로컬 환경 데이터에 저장된다. 3. 도메인 단위로 구분되어 활용된다. ex) localhost -->뒤에 어떠한 url이 오든 공유됨(엔트포인트가 달라도) 4. 브라우저 자체를 종료해도 존재한다. 5. 컴퓨터를 껐다켜도 존재한다. // 로컬 스토리지에 저장함 localStorage.setItem('saved-date', targetDateInput); ..

JS 2023.05.21

@MappedSuperclass

지금까지 학습한 상속 관계 매핑은 부모 클래스와 자식 클래스를 모두 데이터베이스 테이블과 매핑했다. 부모 클래스는 테이블과 매핑하지 않고 부모 클래스를 상속 받는 자식 클래스에게 매핑 정보만 제공하고 싶으면 @MappedSuperclass를 사용하면 된다. @MappedSuperclass는 비유를 하자면 추상 클래스와 비슷한데 @Entity는 실제 테이블과 매핑되지만 @MappedSuperclass는 실제 테이블과는 매핑되지 않는다. 이것은 단순히 매핑 정보를 상속할 목적으로만 사용된다. 회원(Member)와 판매자(Seller)는 서로 관계가 없는 테이블과 엔티티다. 테이블은 그대로 두고 객체 모델의 id, name 두 공통 속성을 부모 클래스로 모으고 객체 상속 관계로 만들어보자. @MappedSup..

JPA 2023.05.11

상속 관계 매핑

관계형 데이터베이스에는 객체지향 언어에서 다루는 상속이라는 개념이 없다. 대신에 슈퍼타입(Super-type)과 서브타입(Sub-type) 관계라는 모델링 기법이 객체의 상속 개념과 가장 유사하다. ORM에서 말하는 상속 관계 매핑은 객체의 상속 구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것이다. 여기서 저 중간에 엑스표는 Exclusive(상호배제관계)를 의미하고, 하나의 슈퍼타입 엔티티가 여러개의 서브타입 엔티티를 가질 수 없다는 것을 의미한다. 반대로 엑스표가 없으면 Inclusive(상호보완관계)를 의미하고, 하나의 슈퍼타입 엔티티가 여러개의 서브타입 엔티티를 가질 수 있다는 것을 의미한다. 슈퍼타입, 서브타입 논리모델을 실제 물리모델인 테이블로 구현할 때는 3가지 방법을 선택할 수 ..

JPA 2023.05.11

[아이템4] 인스턴스화를 막으려거든 private 생성자를 사용하라

public class Utility{ //기본 생성자를 막기 위해 private 사용 private Utility(){ //기본생성자를 통한 객체 생성 방지를 위해 throw 발생 throw new Exception(); } } 명시적으로 만든 생성자가 private이기 때문에 클래스의 외부에서는 접근 불가능하다. 따라서 어떤 환경에서도 클래스가 인스턴스화 되는것을 막을 수 있다. throw new Exception처럼 예외를 발생시켜 직관적으로 명시해준다.

Effective Java 2023.04.27

[아이템3] private 생성자나 열거 타입으로 싱글턴임을 보증하라

싱글턴: 인스턴스를 오직 하나만 생성할 수 있는 클래스 주의점: 클래스를 싱글턴으로 만들게 되면 사용하는 클라이언트를 테스트하기가 어려워진다. ->MOCK객체를 만들 수 없기 때문에 ​ 1. public static final 방식의 싱글턴 public static final Elvis INSTANCE = new Elvis(); private Elvis(){...} 위 코드처럼 INSTANCE를 호출하게 되면 Elvis는 최초 한 번만 만들어진 이후에 쭉 재사용된다. ​ 장점: public static final 클래스이므로 맨 처음에 메모리가 올라오고 나서 변경이 불가능하니 명백히 싱글턴임이 드러난다. Elvis el = new Elvis(); //불가능 Elvis el1 = Elvis.INSTANCE..

Effective Java 2023.04.27