플러시영속성 컨텍스트의 변경 내용을 데이터베이스에 동기화하는 것이다. 플러시를 실행할 경우 다음과 같은 일이 일어난다. 변경 감지가 동작해서 영속성 컨텍스트에 있는 모든 엔티티를 스냅샷과 비교해서 수정된 엔티티를 찾는다.수정된 엔티티는 수정 쿼리를 만들어 쓰기 지연 SQL 저장소에 등록한다. 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송한다. 영속성 컨텍스트를 플러시하는 방법은 3가지가 있다. em.flush()를 직접 호출한다.엔티티 매니저의 flush() 메서드를 직접 호출해서 영속성 컨텍스트를 강제로 플러시한다.테스트나 다른 프레임워크와 JPA를 함께 사용할 때를 제외하고 거의 사용하지 않는다. 트랜잭션 커밋 시 플러시가 자동 호출된다. JPQL 쿼리 실행 시 플러시가 자동 호출된다. 추가로..
객체와 관계형 데이터베이스는 지향하는 목적이 서로 다르므로 둘의 표현 방법은 다르다.이것을 객체와 관계형 데이터베이스의 패러다임 불일치 문제라고 한다. 패러다임의 불일치로 인해 발생하는 문제를 살펴 본 후, JPA를 통한 해결책을 알아보자.상속abstract class Item { Long id; String name; int price;}class Album extends Item { String artist;}class Movie extends Item { String director; String actor;}class Book extends Item { String author; String isbn;}만약 Album 객체를 데이터베이스에 저장하려면 이 객체를 분해해서 다음 ..
개발을 하다보면 내부 또는 외부 API 를 호출하는 일이 생긴다. (내가 말하는 내부 API는 내 프로젝트가 마이크로서비스 구조인 경우를 생각하고 작성한 것이다.🧐) * JDK에서 지원하는 HttpURLConnection 클래스를 사용할 수 있다. 그렇다면 스프링에서는 다른 Rest API 를 호출할 때 어떠한 템플릿을 지원하는지 알아보자. RestTemplate Spring 3.0 부터 지원 thread-per-request 모델 기반 Synchronous & Blocking 방식 RestTemplate 방식의 특징을 좀 풀어서 이해해보자. thread-per-request 모델 기반 ? 정확하게 말하자면 RestTemplate 은 thread-per-request 모델을 기반으로 하는 Java Ser..
스프링 부트에서 유효성 검증 사용하기 spring boot 2.3 이상부터는 dependency 를 추가해주어야 한다. spring-boot-starter-validation 은 다음과 같이 정의되어 있다. Starter for using Java Bean Validation with Hibernate Validator Java Bean Validation? Hibernate Validator? 무엇인지 알아보자. Bean Validation Java Bean 유효성 검증을 하기 위한 메타데이터 모델 및 API를 정의한 것이다. - 위키백과 표준 프레임워크이다. * 명세 확인하기 * JSR380은 Jakarta EE 그리고 JavaSE 의 일부인 빈 유효성 검사를 위한 Java API이다. Hiberna..
Component Scan은 @Component 가 붙은 모든 클래스를 스프링 빈으로 등록해준다. 스프링 빈의 기본 이름은 클래스명을 사용하되 맨 앞글자만 소문자로 사용한다. * 빈 이름을 @Component("myComponent") 이런식으로 직접 지정할수가 있다. 내 프로젝트 구조는 다음과 같다. com.my com.my.service com.my.repository 컴포넌트 스캔 사용하기 1. 빈으로 등록할 클래스 설정 MemberServiceImpl 파일은 com.my.service 패키지에 위치한다. @Component public class MemberServiceImpl implements MemberService { } 2. 컴포넌트 스캔 클래스 설정 AppConfig 파일은 com.my..
스프링의 기본 빈 등록 방식은 싱글톤이다. * 하지만 싱글톤 방식만 지원하는게 아니라 요청할 때마다 새로운 객체를 반환하는 기능도 제공한다. 스프링 컨테이너는 *싱글턴 패턴을 적용하지 않아도 객체 인스턴스를 싱글톤으로 관리한다. @Configuration public class AppConfig { @Bean //spring container에 등록 public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } } 스프링 컨테이너에 memberSe..
스프링 컨테이너는 자바 객체를 생성하고 연결하고 구성하는 객체의 생명주기를 관리한다. (컨테이너는 스프링의 핵심 !) 이렇게 스프링 컨테이너에서 관리되는 객체를 스프링에서 Spring Bean 이라고 한다. Spring Container 종류 BeanFactory 스프링 컨테이너의 최상위 인터페이스이다. 스프링 빈을 관리하고 조회하는 역할을 담당한다. 스프링 Bean과 관련된 대부분 기능(getBean() 포함)은 BeanFactory가 제공한다. ApplicationContext BeanFactory의 기능을 모두 상속받아 제공한다. 대부분의 Bean 관련 기능은 BeanFactory가 제공하지만, ApplicationContext는 아래와 같이 여러 인터페이스들을 상속 받아 더 다양한 기능을 제공한다..
영속성데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다. 영속성 컨텍스트 (Persistence Context)Entity를 영구 저장하는 환경이다.애플리케이션이 데이터베이스에서 꺼내온 객체를 보관하는 역할을 한다.영속성 컨텍스트는 Entity Manager를 생성할 때 하나 만들어진다.영속성 컨텍스트는 Entity Manager를 통해 Entity를 조회하거나 저장할 때 Entity를 보관하고 관리한다. Entity 생명주기비영속 (New/Transient)영속성 컨텍스트와 관계가 없는 상태 (순수한 객체 상태)Member member = new Member();member.setId("1");member.setName("김세영"); 영속 (Managed)영속성 컨텍..
JPA 를 알기 전에 ORM 부터 알아보자. ORM (Object Relational Mapping)데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법이다.(객체지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다.)즉, 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것이다.객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해준다.예를 들어 ORM 프레임워크를 사용하면 객체를 데이터베이스에 저장할 대 INSERT SQL을 직접 작성하는 것이 아니라 객체를 마치 자바 컬렉션에 저장하듯이 ORM 프레임워크에 저장하면 된다.그러면 ORM 프레임워크가 적절한 INSERT SQL을 생성해서 데이터베이스에 객체를 저장해준다..
...View Table 에 대한 내용은 아래 링크에서 확인하도록 하자.https://yeongnius.tistory.com/27 View Table내용을 읽기 전 용어에 대해 정의한다. 기본 테이블 : 물리적으로 실제 존재하는 테이블이다. 뷰 테이블 : 기본 테이블로부터 유도된 가상 테이블, 데이터 사전에만 있고 실제 데이터는 기본 테yeongnius.tistory.com 진행 내용1. 데이터베이스에서 직접 뷰 테이블을 생성한다.JPA를 통해서 뷰 테이블을 생성할 수 없는 것 같았다 :( 2. ReadOnlyRepository를 직접 정의해야 한다.우리는 보통 JpaRepository 를 상속받아 Pagenation, Sorting 포함하여 CRUD 의 기능을 사용한다.@NoRepositoryBeanp..
- Total
- Today
- Yesterday
- JPA
- 추상클래스
- Sticky Session
- nginx
- 정적변수
- 자동구성
- 로드 밸런서
- 티스토리챌린지
- nosql
- fail-fast
- fail-safe
- Load Balancer
- java
- Caching
- syncronized
- Red-Black Tree
- spring boot
- 다중화
- 인터페이스
- AutoConfiguration
- HashSet
- HashMap
- object
- Spring
- Security
- 고정 세션
- 오블완
- Hash
- 인스턴스변수
- @conditional
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |