일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 그리디알고리즘
- 데이터베이스
- 스프링
- mongoDB
- Elasticsearch
- ES
- 개발자
- 읽기쉬운코드
- 그리디
- database
- API
- 클린코드
- 프레임워크
- Spring
- 백준
- cleancode
- 알고리즘
- 코딩
- 애자일기법
- 코드
- 애자일프로그래밍
- JPA
- Baekjoon
- 자바
- 코딩테스트
- spring boot
- Java
- framework
- 개발
- 엘라스틱서치
- Today
- Total
목록SQL (6)
튼튼발자 개발 성장기🏋️
JPA를 사용하면서 가장 중요한 일이 java의 entity와 database의 table을 매핑하는 것이라고 해도 과언이 아니다. 따라서 우리는 매핑 어노테이션을 충분히 알고 써야할 책임이 있다. JPA는 4가지의 매핑 어노테이션을 지원한다. - 객체와 테이블 매핑 : @Entity, @Table - 기본 키 매핑 : @Id - 필드와 컬럼 매핑 : @Column - 연관관계 매핑 : @ManyToOne, @JoinColumn @Entity 테이블과 엔티티를 매핑할 때에는 필수로 사용해야한다. @Entity 어노테이션에서 지원하는 속성은 다음과 같이 정리할 수 있다. 속성 기능 default name 엔티티 명 지정. 다른 패키지에 이름이 같은 엔티티 클래스가 있을 때 사용하여 충돌이 일어나지 않도록 ..
JPA를 사용하는 궁극적인 목적은 데이터베이스 관점의 테이블과 객체지향적 객체 사이에서 개발자가 해야할 일을 최소화하고 객체지향적으로 자유롭게 개발하기 위해서다. 따라서, JPA를 사용하려면 가장 먼저 객체를 매핑해야한다. - 객체 매핑 CREATE TABLE MEMBER ( ID VARCHAR(255) NOT NULL, NAME VARCHAR(255), AGE INTEGER, PRIMARY KEY (ID) ) 위 테이블은 아래와 같이 객체 매핑을 할 수 있다. @getter @setter @Entity @Table(name="MEMBER") public class Member { @id private String id; @Column(nullable = true, length = 255, unique ..

JPA(Java Persistence API)를 알기 위해서는 ORM(Object-Relational Mapping)을 알아야 한다. ORM은 객체와 관계형 데이터베이스를 맵핑해주는 녀석이다. 이전에 언급했듯이 자바의 객체와 관계형 데이터베이스간의 차이가 문제를 일으킬수 있다. 이 문제를 최소화 시키기 위해서 ORM이라고 하는 기술이 등장했다. JPA가 바로 자바 플랫폼의 ORM 표준 기술이다. JPA는 [그림 1]과 같이 동작하게 되는데, JPA가 자바 애플리케이션과 JDBC 사이에서 하는 일은 다음과 같다. 패러다임 불일치 해결 (DB 연동 시 유의할점 #2 참고) SQL query 생성 Entity 분석 (추 후에 이야기 하겠지만 여기서의 엔티티란 테이블을 객체화 시킨 것을 이야기 한다.) 우리는 ..

현대시대에는 자바로 개발되는 애플리케이션을 보면 대부분 관계형 데이터베이스를 사용하고 있다. 이 데이터베이스에서 데이터를 관리하려면 SQL을 사용해야한다. 자바 애플리케이션은 JDBC를 사용해서 DB에 접근한다. 다음 코드를 보자. 우리는 JDBC에게 SQL문을 전달하여 실행하도록 하면서 데이터를 관리한다. String sql = "SELECT NAME FROM MEMBER WHEHERE ID = ?"; ResultSet resultSet = stmt.executeQuery(sql); String name = resultSet.getString("NAME"); Member member = new Member(); member.setName(name); logger.info(member.getName())..
repository 프록시는 메소드 명으로부터 query를 가지고 오는 방법이 두 가지가 있다. 메소드 명으로부터 query를 직접 가지고 오는 방법. 수동적으로 정의된 query를 가지고 오는 방법. 이 두 가지 방법의 선택은 스토어에 따라 달라질 수 있다. 실제 어떤 query가 만들어 지는지는 어떠한 전략(?)이 있다. CREATE query 메소드의 이름을 가지고 query를 만든다. well-known prefix를 모두 제거하고 나머지 이름 부분 가지고 파싱해서 query를 만든다. (ex. findById()) USE_DECLARED_QUERY 선언 되어있는 query를 찾는다. 찾지 못하면 예외가 있으니 예외처리를 해주어야한다. 어노테이션을 사용하여서 어딘가에 정의되어 있을 수 있다. CR..
Database를 연동하게 된다면, 우리는 코드 상에서 query를 날리는 로직이 필요할 것이다. 그렇다면 우리가 해야할 일은 다음과 같을 것이다. 드라이버 로드 -> connection 생성 (혹은 DB pool 사용) -> DB 연결 -> sql auery 실행 -> 자원해제 데이터베이스에 접근 할 때마다 상기 내용과 같은 작업이 반복적으로 이루어져야만 한다는 이야기다. 이를 해결하기 위해 JDBC를 사용하는 것이다. spring JDBC를 사용하기 위해 spring-jdbc maven lib이 필요하다. 찾는 방법은 이전 글의 maven Repository를 참고하자. #12 : spring 관련 docs 및 API 참고 자료 spring을 사용하려면 spring docs는 필수로 보아야하고, 어떤..