| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- Geoserver
- Maven
- 1093
- hadoop #hdfs
- Linux
- RDB
- spring
- AuthenticationPrincipal
- JWT
- #mojo
- insert into
- Java
- Spring Security
- postgresql
- LazyInitializationException
- QGIS
- JSON Web Token
- Failed to load ApplicationContext
- spring boot
- posgis
- psycopg2
- python
- sftp
- postgres
- uuid
- JPA
- Docker
- mysql
- nginx
- Kafka
- Today
- Total
FOREST_CHOI's BLOG
JPA? 본문
3. JPA
JPA
- Java Persistence API
- 자바 ORM 기술에 대한 표준 명세로, 자바 애플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다.
- 개발자가 직접 SQL을 작성하지 않고, JPA API를 활용해 DB를 저장하고 관리 할 수 있다.
ORM
- Object Relational Mapping
- ORM 프레임워크는 자바 객체와 관계형 데이터베이스를 매핑힌다. 즉, 객체가 DB테이블이 되도록 만들어 주는 것이다. ORM을 사용하면, SQL을 작성하지 않아도 직관적인 메소드로 데이터를 조작할 수 있다는 장점이 있다.
특징
1) 객체중심 개발 가능
- SQL중심의 개발이 이루어진다면, CURD작업이 반복해서 이루어져야 한다.
- 하나의 테이블을 생성해야 할 때 이에 해당하는 CURD를 모두 만들어야 하며, 추후에 컬럼이 생성되면 관련 SQL을 모두 수정해야하는 번거로움이 있다. 또한 개발과정에서 실수한 가능성이 높아진다.
2) 생산성 증가
- SQL쿼리를 직접 생성하지 않고, 만들어진 객체에 JPA메소드를 활용해 데이터베이스를 다루기 때문에 개발자에게 편리성을 제공해준다.
3) 유지보수 용이
- 쿼리 수정이 필요할 때, 이를 담아야 할 DTO 필드도 모두 변경해야 하는 작업이 필요하지만 JPA에서는 엔티티 클래스 정보면 변경하면 되므로 유지보수에 용이하다.
4) 성능증가
- 사람이 직접 SQL을 짜는 것과 비료해서 JPA는 동일한 쿼리에 대한 캐시기능을 지원해 주기 때문에 비교적 높은 성능을 경험 할 수 있다.
제약사항
- JPA는 복잡한 쿼리보다는 실시간 쿼리에 최적화 되어있다. 복잡한 작업이 필요한 경우에는 기존의 MyBatis와 같은 Mapper 방식이 더 효율적이다.
* Spring에서는 JPA와 MyBatis를 같이 사용할 수 있기 때문에, 상황에 맞는 방식을 택하여 개발하면 된다.
'프로그래밍 > JPA' 카테고리의 다른 글
| JPA OrderBy rand() Issue (1) | 2022.11.08 |
|---|---|
| @Embedded, @Embeddable (0) | 2022.10.20 |
| data.sql / insert 구문 시 pk 안들어가는 문제 (0) | 2022.09.23 |
| org.h2.jdbc.JdbcSQLDataException: Hexadecimal string contains non-hex character (0) | 2022.09.20 |
| 영속성 전이 - 삭제 (0) | 2022.08.01 |