[Http & Network]
책이 이해가 안 가서 네트워크 기초 영상들만 찾아서 봤다.
🚩HTTP (HyperText Transfer Protocol)
클라이언트에서 서버까지 일련의 흐름을 결정하는 "약속"
Web은 이 HTTP라는 약속을 사용한 통신으로 이루어져 있다.
🚩Network
데이터를 공유할 수 있게 하는 디지털 전기 통신망의 하나
분산되어 있는 컴퓨터를 통신망으로 연결
전 세계를 연결하는 세상에서 가장 큰 Network 가 인터넷!
이런 통신망으로 우리가 Web service를 이용하는 것
🚩Web
인터넷 네트워크 상에서 동작하는 하나의 응용 서비스
[05장 데이터베이스 조작이 편해지는 ORM]
🚩JPA
자바에서 관계형 DB을 사용하는 방법을 정의한 인터페이스
이 인터페이스를 구현화한게 하이버네이트
내부적을오는 JDBC의 JDBC API를 다룬다.
❓영속성 컨텍스트
JPA 의 특징 중 하나 !!! Entity 를 관리하는 가상의 공간이다.
● 특징
1. 1차 캐시
Entity를 조회하면 1차 캐시에서 데이터를 조회하고 반환, 값이 없으면 DB에서 조회해 1차 캐시에 저장한 다음 반환한다.
2. 쓰기 지연
쿼리를 모았다가 트랜잭션을 커밋하면 모았던 쿼리를 한꺼번에 실행한다.
3. 변경 감지
트랜잭션 커밋 시 1차 캐시에 저장된 Entity 의 값, 현재 Entity 의 값을 비교해 변경 사항을 감지, DB에 자동으로 반영한다.
4. 지연 로딩
필요할 때 쿼리를 날린다.
▶ 모두 DB 접근을 최소화해 성능을 높인다!
🚩스프링 데이터 JPA
스프링 데이터는 비즈니스 로직에 더 집중할 수 있게 DB 사용 기능을 추상화했다. 이 인터페이스를 통해 스프링 데이터를 사용할 수 있고 각 DB의 특성에 맞춰 확장된 기술도 제공한다. 스프링 데이터 JPA는 스프링 데이터의 공통적인 기능에서 JPA의 유용한 기술이 추가된 기술이다.
수업에서 스프링 데이터 JPA에서 제공하는 JpaRepository 인터페이스를 상속받은 인터페이스로 Repository 를 사용했었다.
interface CourseRepository: JpaRepository<Course, Long> {
}
스프링 데이터 JPA 없이 method 호출로 Entity 를 관리한다면 이런 모습이었다.
@PersistenceContext
var em: EntityManager? = null
fun join() {
val member: Member = Member(1L, "홍길동") // Entity 비영속 상태
em!!.persist(member) // 관리 상태
}
JpaRepository 안을 보면

Crud 메소드, 페이징과 정렬 메소드 등이 제공되는 걸 알 수 있다.
이 덕분에


서비스로직에서 Repository 역할을 하는 인터페이스로 기본 CRUD기능을 간편하게 사용할 수 있다.
@어노테이션 살펴보기
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
var id: Long? = null
@Id
: 테이블의 기본키로 지정
@GeneratedValue
: 기본키의 생성방식을 결정

JPA 도 있고 스프링 데이터도 있고 스프링 데이터 JPA 도 있고 죄다 이름들이 비슷해서 헷갈리네요~~
아예 바닥부터 아무것도 없는 상태에서 해보고 그 다음 도구 써보고 그 다음 단계 도구 써보고 했으면 뭔지 바로 알 것 같은데 그러면 시간이 엄청 오래 걸리겠지 🙄
'왕초보일지' 카테고리의 다른 글
240103 TIL | step1피드백, step2정리, step3 (0) | 2024.01.03 |
---|---|
240102 TIL | (0) | 2024.01.02 |
231229 TIL | 스프링 부트 3 기본 지식 (2) | 2023.12.29 |
231228 TIL | (0) | 2023.12.28 |
231227 | Todo Step1 (0) | 2023.12.27 |