Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Application Event
- Application Runner
- AuthenticationPrincipal
- 리소스핸들러
- 리소스 서버
- JPA
- 브루트포스
- 백준
- 백트래킹
- 백기선
- 알고리즘
- WebApplication Type
- 외부설정
- HttpMessageConverters
- 스프링 부트
- JsonSerializer
- HATEOAS
- 스프링부트
- @Profile
- 다익스트라
- rest api
- Application Argument
- 정적 리소스
- cors
- OAuth2
- @ConfigurationProperties
- webjar
- Spring Security
- application.properties
- EnableAutoConfiguration
Archives
- Today
- Total
아카이브
[스프링 데이터 JPA] ORM 개요 본문
ORM(Object Relation Mapping)
ORM은 애플리케이션의 클래스와 SQL 데이터베이스의 테이블 사이의 맵핑 정보를 기술한 메타데이터를 사용하여, 자바 애플리케이션의 객체를 SQL 데이터베이스의 테이블에 자동으로 (또 깨끗하게) 영속화 해주는 기술입니다.
/* 도메인 모델을 사용하는 코드를 Object 라고 함 */
/* Connection을 사용한 방법보다 훨씬 깔끔하게 작성할 수 있다. */
Account account = new Account(“keesun”, “pass”);
accountRepository.save(account);
JDBC 대신 도메인 모델을 사용하는 이유?
- 객체 지향 프로그래밍의 장점을 살릴 수 있다.
- 여러가지 디자인 패턴도 적용할 수 있다.
- 코드의 재사용성도 높일 수 있다.
- 비즈니스 로직 구현과 테스트 코드 작성이 용이하다.
장점
- 생산성: 맵핑만 하면 데이터 입 출력이 정말 쉬워짐. (MyBatis와 같은 Mapper 방식은 컬럼이 추가될 시 수정해야 할 부분들이 상당히 많았다.)
- 유지보수성: 코드가 굉장히 간결해지고 코드양이 줄어 유지보수성이 높아짐(Entity Class 정보만 수정하면 된다)
- 성능
- 논쟁의 여지가 있음 SQL단건만 보면 ORM이 더 느릴수있음
- Hibernate는 객체와 테이블에 데이터 사이에 캐시가 존재하므로 불필요한 쿼리를 사용하지 않음(1차 캐시)
- 하나의 트랜잭션 내에서 여러 요청이 일어나도 정말로 데이터베이스에 반영해야되는 시점에만 반영을함(Write Behind)
- 데이터가 같거나 반영할 필요가 없다면 반영하지 않아서 성능에 장점이 있음(Dirty Checking)
- 성능 최적화를 위한 여러가지 기능들을 제공함
- 벤더 독립성: Hibernate가 어떠한 데이터베이스에 맞게 SQL을 생성해야 되는지만 알려주면 됨
- 데이터베이스가 바뀌어도 코드가 변경되지 않음
- Hibernate가 데이터베이스 sync를 할때 객체를 영속화 할때 발생하는 SQL만 자동으로 바뀜
'Spring > 스프링 데이터 JPA' 카테고리의 다른 글
[스프링 데이터 JPA] JPA 프로그래밍 2. 엔티티 타입 맵핑 (0) | 2021.01.10 |
---|---|
[스프링 데이터 JPA] JPA프로그래밍 1. 프로젝트 셋팅 (0) | 2021.01.10 |
[스프링 데이터 JPA] ORM 패러다임 불일치 (0) | 2021.01.10 |
[스프링 데이터 JPA] 핵심 개념 이해 (0) | 2021.01.10 |
[스프링 데이터 JPA] 인트로 (0) | 2021.01.10 |