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 | 29 | 30 |
Tags
- js
- di
- Security
- Kotlin
- HTTP
- 로그인
- HTTP 메서드
- Repository
- Excel
- BEAN
- javascript
- 싱글톤
- dependency injection
- vuex
- Java
- 의존성 주입
- Singleton
- vue-cli
- 캐시
- DB
- thymeleaf
- 라이프 사이클
- Vue.js
- cache
- Setter
- 프로토타입
- Stateless
- VUE
- Spring
- JPA
Archives
- Today
- Total
jhhan의 블로그
Spring_JPA 본문
일단은 JPA의 기본에 대해 쓸려고 합니다.
자세한 부분을 알고 싶다면 다른 글을 찾아보시는 걸 추천합니다.
JPA(Java Persistent API)
- Java의 영속성 관리와 ORM을 위한 표준 기술입니다.
- 기존 EJB ORM이던 Entity Bean을 JPA로 바꾼 것입니다.
- ORM 표준 기술로 Hibernate, OpenJPA, EclipseLink, TopLink, Essentials 같은 구현체가 있고, 이에 표준 인터페이스가 JPA입니다.
ORM(Object Relational Mapping)
- RDB 테이블을 객체지향적으로 사용하기 위한 기술입니다.
- ORM을 사용해서 RDB와 오브젝트 사이에 존재하는 개념과 접근을 객체지향적으로 다루기 위한 기술입니다.
JPA의 장점&단점
장점
- 데이터 관리가 객체지향적 -> 비즈니스 로직에 집중이 가능하고, 객체지향적 개발이 가능하다.
- 테이블 생성, 변경, 관리가 쉬운 편이다.
단점
- JPA에 대해 잘 이해하고 있어야 한다.
- 그렇지 않다면 데이터 손실, 성능 문제가 생길 수 있다.
소스코드 상 적용되는 애너테이션
1. @Entity
- 특정 DB Table과 매핑되는 클래스에 붙여서 사용합니다.
- 보통 클래스와 같은 이름을 사용합니다.
- @Entity(name="MyAccount")같은 형식으로 변경이 가능합니다.
2. @Table
- RDBMS 안의 릴레이션 스키마에 대응되는 이름입니다.
- @Table(name = "myAccount")같은 형식의 어노테이션을 붙여 Entity와 대응되는 테이블명을 명시할 수 있습니다.
3. @Id
- DB Table에서 ID column에 해당되는 필드에 사용이 됩니다.
- Primary key를 매핑할 때 사용합니다.
4. @Column
- 멤버 변수와 DB Table의 컬럼에 매핑합니다.
- @Entity가 붙어있는 클래스이면 기본적으로 부여됩니다.
5. @GeneratedValue
- auto_increment에 대응되는 정보에 사용됩니다.
6. @Temporal
- 시간을 나타내는 데이터를 각 DBMS에서 제공하는 시간 관련 데이터와 매핑합니다.
7. @Transient
- DB컬럼과 매핑하지 않고 싶은 멤버 변수에 사용됩니다.
8. EntityManager 인터페이스
- JPA의 핵심
- 이 인터페이스의 구현체를 통해 DB와 자바 객체 사이의 데이터 교환이 이루어진다.
JPA 처리 Repository - 4가지가 있습니다.
- Repository<T,ID>
- CrudRepository<T,ID>
- PagingAndSortingRepository<T,ID>
- JpaRepository<T,ID>
JPA에 관련해서는 꾸준히 추가하도록 노력하겠습니다.
'Spring' 카테고리의 다른 글
Spring_Security 응용 - 로그인 페이지 만들기(1) (0) | 2020.03.03 |
---|---|
Spring - Error_Page (0) | 2020.03.03 |
Spring ThymeLeaf(타임리프)(2) (1) | 2020.02.27 |
Spring ThymeLeaf(타임리프)(1) (0) | 2020.02.25 |
Spring 주요 개념에 대해 (0) | 2020.02.24 |