rdb패러다임(테이블기반, 연관관계를 fk로 연결)
orm기술을 사용해서 설계할때 하나로 캡슐화 하는게 좋은 개념들을
Dependency injection
- 객체지향설계에서는 객체 간의 행위와 책임을 분리하고 객체들끼리
서로 의존 하도록 설계하는 것이 중요한데 이때
이때 a -> b를 사용하는 관계라고 할 떄 a에서 b를 직접 생성하는 식
사용하는 클래스가 직접 사용할 클래스의 인스턴스를 만들어서 사용하는식으로하면
Dip, ocp를 지키지 못하게 되기때문에 객체지향적으로 설계할 수 없음
그래서 외부에서 의존주입을 받도록 해서 객체지향 설계 원칙을
지키는것
Ioc
- 제어의 역전
내가 사용하는 클래스를 직접 생성하고 설정하는게 아니라
외부에서 이런것들을 제어하는식으로 진행되는것
Application context
* 스프링이 제공하는 ioc컨테이너 인터페이스
Componenet scan
스프링이 빈을 전부 찾아서 빈을 생성 관리, 스프링 컨테이너에 빈으로 등록
Bean life cycle
빈의 생명 주기를 나타냄
- 싱글톤, 세션, 프로토타입 등등이 있음
모의객체? → ??
가비지 컬렉션
더이상 참조되지 않는 메모리 영역 -> 가비지
자바에서는 이러한 가비지를 gc가 처리해줌
자바 버전 마다 알고리즘이 다르지만
보통 mark, sweep 과정을 거쳐서 처리됨
Mark ->. 참조되고 있는 메모리 공간을 체크
Sweep -> mark되지 않는 영역을 해제
4주차 RBF
- JDBC
- JAVA → DB 접근 기술
- UUID
- 거의 완전하게 전세계에서 유일한 값을 사용하고 싶을 때 사용
- AOP
- 프록시패턴을 사용하여 개발에서 공통처리가 필요한 부분을 하나로 빼서 적용시킬 수 있음
- @Transactional 어노테이션도 어노테이션 기반 AOP기술이 적용된 것
- Transaction
- 하나로 묶어서 처리가 필요한 작업들..
- 논리적 단위
- ex) 은행 송금
- DataSource
- 트랜잭션 풀을 관리하는 역할을 함
- 트랜잭션을 매번 요청시마다 생성 → 많은 요청이 한번에 들어오면?
- 트랜잭션 풀을 사용하게 되면 사용 가능한 트랜잭션 수를 정할수 있게 되어 처리 가능한 수만큼 요청을 처리할 수 있음
- 그리고 이미 생성해 놓은 트랜잭션을 받아서 사용하기 때문에 사용자의 요청에 더 빨리 응답 가능
- 이러한 트랜잭션 풀을 관리 하는 것 → datasource
- DBCP
- Database Connection Pool
- datasource가 관리하는 커넥션 풀
- HikariCP는 JDBC 커넥션 풀