상속관계 매핑@MappedSuperclass복합키와 식별 관계 매핑조인 테이블엔티티 하나에 여러 테이블 매핑관계형 DB는 객체지향 언어에서 다루는 상속 이라는 개념이 없다..!대신 슈퍼타입 서브타입 관계 라는 모델링 기법이 객체의 상속 개념과 가장 유사하다슈퍼타입 서브
엔티티의 연관관계를 매핑할 때는 다중성, 관계방향, 주인 을 고려해야 한다다중성ManyToOne (N:1)OneToMany (1:N)OneToOne (1:1)ManyToMany (N:N)단방향 양방향테이블은 외래 키 하나로 Join을 사용해서 양방향으로 쿼리가 가능하여
객체 연관관계필드로 팀 객체와 연관관계를 맺음회원과 팀 객체는 단방향 관계Member.team으로 팀을 알 수 있지만 반대로 팀은 회원을 알 수 없음테이블 연관관계외래 키로 팀 테이블과 연관관계를 맺음회원 테이블과 팀 테이블은 양방향 관계회원 테이블의 TEAM_ID 외
JPA는 다양한 매핑 어노테이션들을 제공한다객체와 테이블 매핑 : @Entity, @Table기본 키 매핑 : @Id필드와 컬럼 매핑 : @Column연관관계 매핑 : @ManyToOne, @JoinColumn해당 어노테이션이 붙은 클래스는 JPA가 관리하는것이다⚠️
Entity Manager FactoryEntityManager를 생성하는 객체하나의 EntityManagerFactory는 어플리케이션 전체에서 공유됨 (싱글톤)EntityManagerFactory를 생성할 때 Connection pool도 함께 생성다중스레드 공유
OSIV는 영속성 컨텍스트를 View까지 열어두는 기능이다. 영속성 컨텍스트가 유지되면 엔티티도 영속 상태로 유지된다. View까지 영속성 컨텍스트가 살아있다면 View에서도 지연 로딩을 사용할 수 있다. 영속성 컨텍스트가 유지되기 때문에 View Template이나
API는 웹 개발시 사실상 필수적으로 들어가는 요소이고 서버와 클라이언트를 이어주는 중요한 다리 역할을 한다. 그런데 이렇게 중요한 API가 변경되는 순간 만약 클라이언트가 해당 사실을 알지 못하고 기존의 API로 요청을 보내 404 에러를 만난다면 얼마나 당황스러울까
위 명령어로 kafka-docker 폴더를 clone 하면 이렇게 폴더가 생성된다.오늘은 해당 폴더 내 docker-compose-single-broker.yml 파일을 통해 kafka 토픽을 생성하고 메시지를 produce, consume 해보자.위와 같이 local
멀티 테넌시는 소프트웨어 어플리케이션의 단일 인스턴스가 여러 고객에게 서비스를 제공하는 아키텍처이다.즉, 여러 테넌트(사용자)를 가진 아키텍처라는 의미다. 중요한 점은 각각의 사용자가 서비스를 독립적으로 이용할 수 있어야 한다는 것이다. 예를 들어 메일을 확인하려 열었
동기는 데이터 요청의 결과를 기다리는 것을 말합니다. 즉 요청과 결과가 한 자리에서 동시에 일어납니다.카페에 방문해 커피를 주문할 때, 직원이 한 명 뿐이라면직원에게 커피를 주문주문을 받은 직원은 즉시 커피를 제조제조된 커피 수령이러한 프로세스가 진행되고 이처럼 요청과
객체 지향 프로그래밍과 완전하게 다른 프로그래밍이 아니라 객체 지향 프로그래밍을 돕는 보조 기법이다. 로직을 핵심적인 관점, 부가적인 관점으로 나누어 보고 그 관점을 기준으로 모듈화하는 것이다. (흩어진 관심사(Crosscutting Concerns)를 모듈화)\*모
웹에서 이런 저런 서비스를 돌아다니다 보면 위 사진처럼 카카오, 구글, 애플 등의 외부 소셜 계정을 통해 로그인 및 회원가입이 가능한 서비스들을 만날 수 있다. 로그인뿐 아니라 연동하는 외부 어플리케이션에서 구글, 애플 등이 제공하는 기능들 또한 사용이 가능하다. Go
Hibernate Query Language를 타입에 안전한 방식으로 실행하기 위한 목적으로 만들어짐기존 Query는 String의 연결 (Ex) “select” + “~”)을 통해 작성했다. 이는 가독성이 좋지 않을 뿐더러 오류 발생 여부도 쿼리 발생 시점에 알 수
SSAFY 시절 프로젝트를 진행하던 중 한식연구원(?) 사이트에서 이미지를 불러와 출력해야 하는 과정이 있었는데, 이 때 이미지를 불러오는 과정에서 CORS 에러를 마주하게 되었다.얼추 이런 느낌이었던 것 같다.지금에야 이게 어떤 에러고 어떻게 해결해야하는지 알고 있지
SQL 질의어인 SELECT, INSERT, UPDATE, DELETE문을 이용해 데이터베이스에 접근하는 것과 같지만 질의어는 한 문장이 아닐 수 있다.데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위사용자가 시스템에 대한 서비스 요구 시
HTTP(Hyper Text Transfer Protocol)은 웹 브라우저와 웹 서버간 통신을 위해 디자인된 프로토콜로 HTML 문서와 같은 리소스, 데이터를 가져올 수 있도록 도와준다.HTTP 요청시 브라우저는 HTTP 요청 메시지를 생성하고 TCP/IP 프로토콜을
Single Sign-On의 약자로 여러 개의 사이트에서 한 번의 로그인으로 여러가지 다른 사이트들을 자동적으로 접속 및 이용할 수 있도록 하는 방법을 의미즉, 하나의 사용자 정보를 기반으로 여러 시스템에 대한 통합 인증을 가능하게 하는 것을 말함하나의 아이디 및 패스
DispatcherServlet 이전에 실행되기 때문에 Spring Context와는 별개이다.필터를 추가하기 위해서는 javax.servlet의 Filter 인터페이스를 구현(implements)해야 하며 이는 다음의 3가지 메소드를 가지고 있다.init 메소드ini
데이터베이스 내에서 데이터에 대한 검색, 변경 등의 효율을 높이기 위해 사용한다.정규화는 단계별로 제1, 제2, 제3 정규화로 나뉜다.제 1정규화는 한 칸에는 하나의 데이터만 보관하는 것이다.위처럼 데이터를 저장하게 되면 추후 골프초급 수강신청한 사람을 찾을 때WHER
흔히들 사전의 색인이라 설명하지만 잘 와닿지 않는다. 사전에서 색인을 통해 무언가를 찾아본 경험이 적기 때문일까?조금 더 쉽게 설명하자면 UP, DOWN 게임을 상상해보면 된다누군가가 1부터 100까지의 숫자 중 하나를 선택하고 우리는 질문을 통해 그 수를 알아내야 한