DispatcherServlet 이전에 실행되기 때문에 Spring Context와는 별개이다.필터를 추가하기 위해서는 javax.servlet의 Filter 인터페이스를 구현(implements)해야 하며 이는 다음의 3가지 메소드를 가지고 있다.init 메소드ini
SQL 질의어인 SELECT, INSERT, UPDATE, DELETE문을 이용해 데이터베이스에 접근하는 것과 같지만 질의어는 한 문장이 아닐 수 있다.데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위사용자가 시스템에 대한 서비스 요구 시
Hibernate Query Language를 타입에 안전한 방식으로 실행하기 위한 목적으로 만들어짐기존 Query는 String의 연결 (Ex) “select” + “~”)을 통해 작성했다. 이는 가독성이 좋지 않을 뿐더러 오류 발생 여부도 쿼리 발생 시점에 알 수
객체 지향 프로그래밍과 완전하게 다른 프로그래밍이 아니라 객체 지향 프로그래밍을 돕는 보조 기법이다. 로직을 핵심적인 관점, 부가적인 관점으로 나누어 보고 그 관점을 기준으로 모듈화하는 것이다. (흩어진 관심사(Crosscutting Concerns)를 모듈화)\*모
동기는 데이터 요청의 결과를 기다리는 것을 말합니다. 즉 요청과 결과가 한 자리에서 동시에 일어납니다.카페에 방문해 커피를 주문할 때, 직원이 한 명 뿐이라면직원에게 커피를 주문주문을 받은 직원은 즉시 커피를 제조제조된 커피 수령이러한 프로세스가 진행되고 이처럼 요청과
위 명령어로 kafka-docker 폴더를 clone 하면 이렇게 폴더가 생성된다.오늘은 해당 폴더 내 docker-compose-single-broker.yml 파일을 통해 kafka 토픽을 생성하고 메시지를 produce, consume 해보자.위와 같이 local
OSIV는 영속성 컨텍스트를 View까지 열어두는 기능이다. 영속성 컨텍스트가 유지되면 엔티티도 영속 상태로 유지된다. View까지 영속성 컨텍스트가 살아있다면 View에서도 지연 로딩을 사용할 수 있다. 영속성 컨텍스트가 유지되기 때문에 View Template이나
Entity Manager FactoryEntityManager를 생성하는 객체하나의 EntityManagerFactory는 어플리케이션 전체에서 공유됨 (싱글톤)EntityManagerFactory를 생성할 때 Connection pool도 함께 생성다중스레드 공유
JPA는 다양한 매핑 어노테이션들을 제공한다객체와 테이블 매핑 : @Entity, @Table기본 키 매핑 : @Id필드와 컬럼 매핑 : @Column연관관계 매핑 : @ManyToOne, @JoinColumn해당 어노테이션이 붙은 클래스는 JPA가 관리하는것이다⚠️
객체 연관관계필드로 팀 객체와 연관관계를 맺음회원과 팀 객체는 단방향 관계Member.team으로 팀을 알 수 있지만 반대로 팀은 회원을 알 수 없음테이블 연관관계외래 키로 팀 테이블과 연관관계를 맺음회원 테이블과 팀 테이블은 양방향 관계회원 테이블의 TEAM_ID 외
엔티티의 연관관계를 매핑할 때는 다중성, 관계방향, 주인 을 고려해야 한다다중성ManyToOne (N:1)OneToMany (1:N)OneToOne (1:1)ManyToMany (N:N)단방향 양방향테이블은 외래 키 하나로 Join을 사용해서 양방향으로 쿼리가 가능하여
상속관계 매핑@MappedSuperclass복합키와 식별 관계 매핑조인 테이블엔티티 하나에 여러 테이블 매핑관계형 DB는 객체지향 언어에서 다루는 상속 이라는 개념이 없다..!대신 슈퍼타입 서브타입 관계 라는 모델링 기법이 객체의 상속 개념과 가장 유사하다슈퍼타입 서브
프록시와 즉시로딩, 지연로딩영속성 전이와 고아객체지연로딩 기능을 사용하려면 실제 엔티티 객체 대신에 데이터베이스 조회를 지연할 수 있는 가짜 객체가 필요한데 이것을 프록시 객체라 한다데이터베이스 조회를 미루고싶다면 EntityManager.getReference() 메
기본 값 타입자바 기본 타입 (int, double 등)래퍼 클래스 (Integer, Boolean 등)String임베디드 타입 (복합 값 타입)컬렉션 값 타입생명주기를 엔티티에 의존회원삭제시 이름, 나이 등등 필드들이 함께 삭제됨값 타입은 공유하면 안됨Side Eff
데이터는 데이터베이스에 있으므로 SQL 로 내용을 최대한 걸러서 조회해야 한다. 하지만 ORM 을 사용하면 데이터베이스 테이블이 아닌 엔티티 객체를 대상으로 개발하므로 검색도 테이블이 아닌 엔티티 객체를 대상으로 하는 방법이 필요하다. 이를 해결하기 위한것이 JPQL이
데이터 접근계층을 개발할 때 구현 클래스 없이 인터페이스만 작성해도 개발을 완료할 수 있다스프링 데이터 JPA는 스프링 데이터 프로젝트의 하위 프로젝트 중 하나이며 다양한 데이터 저장소에 대한 접근을 추상화해서 개발자 편의를 제공하고 지루하게 반복하는 데이터 접근 코드
J2SE 환경 : 개발자가 직접 엔티티 매니저를 생성, 트랜잭션 관리J2EE, 스프링 : 컨테이너가 제공하는 전략을 따라야 함트랜잭션 범위의 영속성 컨텍스트 전략트랜잭션을 시작할 때 영속성 컨텍스트를 생성하고 트랜잭션이 끝날 때 영속성 컨텍스트를 종료같은 트랜잭션 안에
JPA가 지원하는 컬렉션의 종류와 중요한 부가 기능들을 알아보자.컬렉션 : 다양한 컬렉션과 특징 설명컨버터 : 엔티티의 데이터를 변환해서 데이터베이스에 저장리스너 : 엔티티에서 발생한 이벤트 처리엔티티 그래프 : 엔티티를 조회할 때 연관된 엔티티들을 선택해서 함께 조회