일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JPA
- 애자일프로그래밍
- 개발
- 코드
- 코딩
- 애자일
- spring boot
- 그리디알고리즘
- 그리디
- database
- Baekjoon
- 자바
- 백준
- 개발자
- 알고리즘
- 코딩테스트
- 스프링
- 클린코드
- cleancode
- API
- Java
- framework
- 읽기쉬운코드
- 엘라스틱서치
- ES
- 프레임워크
- 데이터베이스
- Elasticsearch
- Spring
- 애자일기법
- Today
- Total
목록database (16)
튼튼발자 개발 성장기🏋️
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 분석 (추 후에 이야기 하겠지만 여기서의 엔티티란 테이블을 객체화 시킨 것을 이야기 한다.) 우리는 ..
애플리케이션을 개발할 때 상용계 운영과 유지보수도 함게 생각하면서 개발해야 한다. 결국, 내부 로직이 복잡하면 복잡할 수록 유지보수가 어렵고 운영에도 영향을 미치기 쉬울 수 있다. 데이터베이스를 연동 할 때도 복잡해서는 안된다는 이야기이다. 이전 글에서 언급한 것 처럼 개발을 하게 된다면, 유지보수가 말도 못하게 힘들 수 있다. 그렇다고 데이터베이스 연동을 안할 수 없지 않는가. 데이터베이스는 객체지향 이야기 되는 추상화, 상속, 다형성의 개념이 없고, 구조 조차도 다르다. 즉, 객체와 RDB는 각각 지향하는 목적이 다르기 때문에 사용 방법과 표현방식에 차이가 있을 수 밖에 없다. 이 것을 패러다임 불일치 문제라고 이야기 한다. 이러한 문제때문에 객체 구조를 DB 테이블 구조에 저장하는데에 한계가 있을 ..
현대시대에는 자바로 개발되는 애플리케이션을 보면 대부분 관계형 데이터베이스를 사용하고 있다. 이 데이터베이스에서 데이터를 관리하려면 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())..
최근 개인적으로 프로젝트 하느라 H2 데이터베이스를 연동해보았다. H2는 굉장히 생소했지만 테스트 용으로 많이들 사용하는 것 같다. "인메모리 데이터베이스"로 분류되어 있으며 용량이 작고 속도가 빠르다는 장점을 가지고 있다. 이 H2를 spring MVC에 연동하는 것이 굉장히 힘들었다. mySql이나 몽고와는 살짝 다른 건지.. 아니면 내가 spring을 공부하는 단계라서 그런건지 너무 어려웠다. 약 3일동안 삽질해서 연동을 해보았다. 가장 먼저 연동을위한 repository를 dependency 걸어주자. 참고로 나는 Gradle Build tool을 사용해서 maven을 사용한다면 pom.xml에 알맞은 버전을 걸어주면 된다. dependencies { compile group: 'org.sprin..
repository 프록시는 메소드 명으로부터 query를 가지고 오는 방법이 두 가지가 있다. 메소드 명으로부터 query를 직접 가지고 오는 방법. 수동적으로 정의된 query를 가지고 오는 방법. 이 두 가지 방법의 선택은 스토어에 따라 달라질 수 있다. 실제 어떤 query가 만들어 지는지는 어떠한 전략(?)이 있다. CREATE query 메소드의 이름을 가지고 query를 만든다. well-known prefix를 모두 제거하고 나머지 이름 부분 가지고 파싱해서 query를 만든다. (ex. findById()) USE_DECLARED_QUERY 선언 되어있는 query를 찾는다. 찾지 못하면 예외가 있으니 예외처리를 해주어야한다. 어노테이션을 사용하여서 어딘가에 정의되어 있을 수 있다. CR..
사실 spring에서 MyBatis를 먼저 배우게 되는데 나는 생략하고 가장 핫한 JPA를 공부해볼까 한다. MyBatis를 경험해본 경과 상당히 귀찮고 반복되는 로직과 sql 작성으로인한 오타 등으로 나를 힘들게 했던 기억이 난다. JPA는 Java Persistence API로 RDB 관계를 표현하는 자바의 API로써 spring Data JPA는nce API로 RDB 관계를 표현하는 자바의 API로써 spring Data JPA는이러한 JPA에 대한 저장소를 서포트한다. 이 spring Data JPA는 JPA Data Source에 접근해야하는 프로그램 개발에 용이할 수 있다고 정의되어 있다. JPA reference는 다음 문서를 참고하자. 예제도 구할 수 있으니 꼭 참고하자. Spring Da..
Database를 연동하게 된다면, 우리는 코드 상에서 query를 날리는 로직이 필요할 것이다. 그렇다면 우리가 해야할 일은 다음과 같을 것이다. 드라이버 로드 -> connection 생성 (혹은 DB pool 사용) -> DB 연결 -> sql auery 실행 -> 자원해제 데이터베이스에 접근 할 때마다 상기 내용과 같은 작업이 반복적으로 이루어져야만 한다는 이야기다. 이를 해결하기 위해 JDBC를 사용하는 것이다. spring JDBC를 사용하기 위해 spring-jdbc maven lib이 필요하다. 찾는 방법은 이전 글의 maven Repository를 참고하자. #12 : spring 관련 docs 및 API 참고 자료 spring을 사용하려면 spring docs는 필수로 보아야하고, 어떤..