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 Argument
- @ConfigurationProperties
- application.properties
- 스프링 부트
- cors
- 외부설정
- JPA
- 리소스핸들러
- OAuth2
- Application Event
- WebApplication Type
- 리소스 서버
- rest api
- JsonSerializer
- AuthenticationPrincipal
- 백트래킹
- @Profile
- webjar
- 알고리즘
- 다익스트라
- EnableAutoConfiguration
- 백준
- HttpMessageConverters
- HATEOAS
- Application Runner
- 스프링부트
- Spring Security
- 백기선
- 브루트포스
- 정적 리소스
Archives
- Today
- Total
아카이브
[스프링 데이터 JPA] 핵심 개념 이해 본문
RDBMS와 JAVA
- Persistence(영속성)이란 어떤 정보를 어딘가에 저장하고 애플리케이션을 껐다가 켜도 그 데이터는 유지가 됨
JDBC
- (관계형) 데이터베이스와 자바의 연결 고리
- DataSource / DriverManager
- Connection
- PreparedStatement
SQL
- DDL
- DML
무엇이 문제인가?
- SQL을 실행하는 비용이 비싸다.
- SQL이 데이터베이스마다 다르다.
- 스키마를 바꿨더니 코드가 너무 많이 바뀌네...
- 반복적인 코드가 너무 많아.
- 당장은 필요가 없는데 언제 쓸 줄 모르니까 미리다 읽어와야 하나...
Postgresql Driver 의존성 추가하기
<dependency>
<groupId> org.postgresql </groupId>
<artifactId> postgresql </artifactId>
</dependency>
PostgreSQL 설치 및 서버 실행 (Docker)
/* Docker를 이용한 postgreSQL 설치 및 서버 실행 */
1. 설치
docker run -p 5432:5432 -e POSTGRES_PASSWORD=pass -e
POSTGRES_USER=jumen -e POSTGRES_DB=springboot --jumen postgres_boot -d
postgres
2. 접속
docker exec -i -t postgres_boot bash
3. change user
su - postgres
4. db 접속
psql springdata
5. 데이터베이스 조회
\list
6. 테이블 조회
\dt
7. Query
SELECT * FROM account;
-e : 환경변수
-d : daemon 명
-name: docker 프로세스 명
-i: 인터렉티브 모드
-t: target 이 되는 container
bash: 실행할 명령어
/* Docker 명령어 */
docker ps: docker 프로세스 보기
docker ps -a: 동작하지 않는 docker container 까지 보기
docker rm: docker 컨테이너 삭제
docker stop: docker container stop
docker start: docker container start
문제점
- 테이블 생성이 번거롭다.
- 테이블 데이터와 도메인 객체와의 맵핑이 번거롭다.
- Connection cost가 비싸다. (DBCP - Hikari)
- 각 DB마다 SQL이 조금씩 달라서 재작성하는 경우도 발생한다.
- 반복적인 코드가 많다.
- 한 번에 모두 읽어오는 경우가 많다.
public class Application {
public static void main(String[] args) throws SQLException {
String url = "jdbc:postgresql://localhost:5432/springboot";
String username = "freelife";
String password = "pass";
try(Connection connection = DriverManager.getConnection(url, username, password)){
System.out.println("Connection created: "+ connection);
String sql = "CREATE TABLE ACCOUNT (id int, username varchar(255), password varchar(255));";
sql = "INSERT INTO ACCOUNT VALUES(1, 'freelife', 'pass');";
try(PreparedStatement statement = connection.prepareStatement(sql)){
statement.execute();
}
}
}
}
'Spring > 스프링 데이터 JPA' 카테고리의 다른 글
[스프링 데이터 JPA] JPA 프로그래밍 2. 엔티티 타입 맵핑 (0) | 2021.01.10 |
---|---|
[스프링 데이터 JPA] JPA프로그래밍 1. 프로젝트 셋팅 (0) | 2021.01.10 |
[스프링 데이터 JPA] ORM 패러다임 불일치 (0) | 2021.01.10 |
[스프링 데이터 JPA] ORM 개요 (0) | 2021.01.10 |
[스프링 데이터 JPA] 인트로 (0) | 2021.01.10 |