지금 시대는 '관계형 데이터베이스(Oracle, MySql)'을 많이 사용한다. 즉, 객체를 관계형 DB에 넣어 관리해야하는데, 여기서 우리는 SQL 굴레에 빠지게 된다. 🤔 그럼 SQL의 문제점은 무엇일까? 1. 무한 반복, 지루한 코드 - crud, 자바 -> 객체, 객체 -> 자바로 무한히 반복해야한다. 결국 관계형 데이터베이스를 사용하면 sql에 의존할 수밖에 없다. 객체와 관계형 데이터베이스의 차이점은 다음과 같다. 1. 상속, 2. 연관관계, 3. 데이터 타입, 4. 데이터 식별 방법 위의 문제를 해결하기 위해서 개발자가 'SQL 매퍼' 역할을 수행해야 한다. 계층형 아키텍처 진정한 의미의 계층 분할이 어렵다. 즉, 객체답게 모델링 할수록 매핑 작업만 늘어난다. 객체를 자바 컬렉션에 저장 하듯..
인프런 김영한 선생님의 '자바 ORM 표준 JPA 프로그래밍 - 기본편' 강의에서 SQL 중심적인 개발의 문제점에 대해 학습한 내용을 정리한다. ✔ 연관관계 객체는 연관관계 시 참조 사용 : member.getTeam() 테이블은 외래 키 사용 : JOIN ON M.TEAM_ID = T.TEAM_ID 객체에서는 Team -> Member로 이동할 수 없지만 테이블에서는 Team에서 FK를 이용해 Member의 데이터로 가고 싶으면 member와 team을 조인해서 이동할 수 있다. ✔ ORM이란? 🤔 Object-relational mapping(객체 관계 매핑) 객체는 객체대로 설계하고 관계형 데이터베이스는 관계형 데이터배이스대로 설계하면 ORM 프레임워크가 중간에서 매핑을 해주는 것을 의미 대중적인 ..
JPA의 플러시에 대해 알아보자. 이전 포스팅과 연결되므로 이전 포스팅을 참고하길 바란다. (이전 포스팅 글씨를 누르면 이동할 수 있다.) 🤔 플러시는 언제 발생할까? 데이터 베이스 트랜잭션이 일어나면 플러시는 자동으로 일어난다! 지난 포스팅에서 db에 쿼리는 commit할 때 날아간다고 했다. 그런데 만약 내가 comimit 하기 전에 db에 쿼리가 제대로 날아가는지 확인하고 싶다면 어떻게 해야할까? 바로 이렇게 하면 된다 em.flush()를 하게 되면 db에 쿼리가 바로 날아간다. 그럼 확인해보자. 보이는가? 구분을 위해 그어둔 ================선이 쿼리문 뒤에 나타났다. 플러시에 대해 정리해보자 플로시는 영속성 컨텍스트를 비우지 않고, 영속성 컨텍스트의 변경내용을 데이터베이스에 동기화..
오늘은 JPA의 영속성 관리에 대해 알아보자. 이전 포스팅과 이어지는 내용이므로 이전 포스팅을 참고하기를 바란다. JPA에서 필수로 알아야 할 단어 중 하나인 '영속성 컨텍스트'에 대해 알아보자. 영속성 컨텍스트란, 엔티티를 영구 저장하는 환경을 의미한다. EntityManager.persist(entity)로 엔티티를 영속성 컨텍스트에 저장한다. 엔티티는 생명주기가 있다. 비영속(new/transient) 우리가 흔히 new 연산자를 이용해 객체를 생성한 상태는 영속성 컨텍스트와 관계가 없는 새로운 상태를 의미한다. 영속(managed) EntityManager.persist(entity)를 하게 되면 영속 상태가 되는데 영속성 컨텍스트에 '관리'되는 상태이다. 위 사진에서 설명한 대로 Member 객..
JPA(Maven)를 이용하여 프로젝트를 시작해보자. 먼저, 아래줄의 링크를 눌러 H2 데이터베이스를 설치해보자. H2 데이터베이스 설치(링크) H2 데이터 장점 가볍다(1.5M) 시퀀스, AUTO INCREMENT 기능을 지원한다. 웹용 쿼리툴을 제공한다. Maven 특징(링크) 자바 라이브러리, 빌드 관리 도구 라이브러리 자동 다운로드 및 의존성 관리 최근에는 Gradle이 점점 유명해짐. ⚙ Project Settings 자바 8 버전 이상 Maven Setting groupId : jpa-basic artifactId : ex1-hello-jpa version : 1.0.0 먼저, pom.xml 파일에 사용할 라이브러리를 추가해보자. 우리는 JPA hibernate 라이브러리와 H2 databas..
- Total
- Today
- Yesterday
- LinkedList
- 강의
- 22 정보처리산업기사
- 그리디
- JPA
- 챌린지
- 백준
- 자바
- Java
- 정보처리산업기사 공부법
- 소스코드
- 디버깅
- 해커랭크 자바 챌린지
- 풀이
- hackerrank
- 해커랭크 자바
- queue
- 해커랭크 챌린지
- ORM
- stack
- 자바의 정석
- 정보처리산업기사
- hackerrank challenges
- challenges
- 개발자
- 22 정보처리 산업기사
- 코드
- BAEKJOON
- 해커랭크
- 정보처리 산업기사
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |