분류 전체보기
-
<Spring JPA> 1.6 플러시JPA 2020. 4. 14. 09:46
플러시는 영속성 컨텍스트의 변경내용을 데이터베이스에 반영하는 것을 말한다. 쉽게 말하면 쿼리를 날린다. 플러시가 발생하는 경우는 더티체크를 통해 변경이 감지되거나, 다른 변경 요청을 받아서 1차캐시와 쓰기 지연 SQL 저장소에 등록되고 트랜잭션이 종료되는 경우에 쓰기 지연 SQL 저장소에 저장되어 있던 SQL 을 디비로 플러시 한다. 위의 경우가 일반적인 경우지만, 플러시가 일어나는 경우는 크게 세 가지로 나눌 수 있다. 첫번째는 직접 플러시 명령어를 하는 것이다. 아주 좋지 않아 보이지만... 기능이 있는 건 분명 사용처가 있을 터. 두번째는 트랜잭션 커밋이다. 위에서 말한 일반적인 경우를 뜻한다. 세번째는 JPQL 쿼리 실행한 경우이다. JPQL 쿼리가 조금 특이하다. 처음 든 생각은 아... JPA..
-
<Spring JPA> 1.5 영속성 컨텍스트JPA 2020. 4. 13. 09:56
JPA 에서 가장 중요한 두가지는 JPA 이용하려 얼마나 효과적으로 데이터베이스를 객체 매핑해서 사용할 것인가와 영속성 컨텍스트를 얼마나 잘 이해하고 있는가라고 할 수 있다. 엔티티매니저팩토리는 요청이 올때마다 엔티티 매니저를 생성하여 커넥션 풀에서 커넥션을 꺼내 사용하고 사라진다. 영속성이라는 개념은 엔티티를 영구 저장하는 환경이라고 보면 된다. 논리적인 개념이고 눈에 보이지 않는 장소이다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근할 수 있다. J2SE (Standard Edition, 일반 자바 프로그램 개발을 위한 용도로 이용되는 개발도구이며 각종 자료구조, 기본 유틸리티, 스윙이나 AWT와 같은 GUI도구등의 기본기능을 포함하고 있다) 에서는 엔티티 매니저와 영속성 컨텍스트가 1:1 J2EE..
-
<Spring JPA> 1.4 Hello JPA 애플리케이션 개발JPA 2020. 4. 9. 09:58
프로젝트 세팅이 끝났다면 간단하게 코드를 작성하여 JPA 동작을 확인할 수 있다. JPA 가 관리할 객체를 생성해주기 위해 클래스를 만든다. 일단은 디비 스키마와 동일하게 만들어주자. 클래스를 작성하고 클래스에 @Entity 어노테이션을 붙여주고, PK 값에 @Id 를 명시해주면 된다. EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); 쓱 생성해준다. input 파라미터는 persistence-unit 에 쓴 name 이다. JPA는 아래와 같이 동작한다. 설정 정보를 조회하여 EntityManagerFactory 를 생성해준다. 이 팩토리를 이용하여 EntityManager 를 생성한다. 주의할 점은 EntityMan..
-
<Spring JPA> 1.3 Hello JPA 프로젝트 생성JPA 2020. 4. 9. 09:57
본격적으로 JPA 프로젝트를 실습한다. 처음은 Spring 을 이용하는 것이 아닌 JPA 만 이용해봄으로써 JPA 가 하는 일에 대해 상세히 볼 수 있고, 스프링이 자동으로 관리해주는 것이 어떤 것인지 확인해보는지 목적을 둔다. 디비는 쉬운 확인과 적용을 위해 H2 데이터베이스를 이용한다. H2 디비가 가볍고 적용이 빠르기 때문에, 간단한 테스트를 위해서 이용하는 것은 아주 유용하다. 하지만 테스트로만 이용하는 디비라고만 기억하면 조금 곤란하고 장단점에 맞게 이용하자. 또한 빌드툴은 메이븐을 사용한다. 그래들을 사용할 수도 있다. 하지만 강의에서 메이븐을 사용하니까...메이븐으로 가자. 물론 대세는 요즘은 그래들이다. 메이븐 프로젝트를 생성한다. 인텔리제이 기준으로 생성하였고, 간단하게 메이븐 기본 프로..
-
<Spring JPA> 1.2 JPA 소개JPA 2020. 4. 7. 09:54
두번째 강의를 들었다. 매일 아침 20분 정도를 할애하기로 해서 과연 언제 다 할 수 있을까 라는 생각이 들어서 ... 궁금한 건 일단 찾아봐야겠다고 생각해서 로드맵을 보았다. 일단 커리큘럼은 이러하다. 1. 자바 ORM 표준 JPA 프로그래밍 - 기본편 (54강) 2. 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 (35강) 3. 실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화 (23강) 4. 실전! 스프링 데이터 JPA (32강) 5. 실전! Querydsl (41강) 보통 한 강의가 20분이니까, 하루 한강의 기준으로 보면 54+35+23+32+41 = 185 가 나온다. 평일 기준으로 월~금이면 일주일에 5번, 185 나누기 5 면 37주. 1년이 52주니까 대충...
-
<Spring JPA> 1.1 SQL 중심적인 개발의 문제점JPA 2020. 4. 6. 10:59
인프런을 통해 강의를 신청했다. 스프링 JPA 에 관한 글을 써보고 싶은데 관련 지식의 부족으로 방법을 고민하던 중, 강의를 들으면서 글을 먼저 써보자고 생각했다. 어떻게 보면 그냥 강의 정리노트에 불과할 수도 있지만, 최대한 내 생각까지 합친 글을 써봐야겠다. 일단은 글 제목은 강의 소제목들과 동일하게 하자. 나중에 검색도 편리할 것 같다. 1.1. SQL 중심적인 개발의 문제점 강사님은 우형에서 일하고 계시는 김영한님이다. 기존에 봤던 영상과 조금은 다르게 세련된 모습으로 나오셔서 놀랐다. 목소리 톤도 그동안 봤던 영상보다 약간 하이톤이었다. 뭔가... 자본적으로...(말을 아끼자) 첫번째 주제는 SQL 중심적인 개발의 문제점이다. JPA 가 무엇인지 언급하기 이전에 무엇이 불편했는지 왜 새로운 무언..
-
<프로그래밍 공부 시작하기-10>자바 공부 시작하기 <마무으리>프로그래밍 2020. 4. 3. 09:27
제목은 자바공부시작하기 마무으리. 시작과 마무리가 공존하는 이름이다. 그도 그럴 것이 그동안 1~10편의 이야기는 자바기본서를 읽기 전까지 책 앞으로 데려가는 과정일 뿐이었다. 이 글들을 잘 읽었어도 자바의 1%도 알지 못한다. 다행인 것은 1% 부근에 도달했다는 것이다. 시작이 반이라는 말이 있듯이 이제 차츰 늘려가면 된다. 현재 개발자로 일하고 있는 나도 자바의 반이라도 제대로 아는 지 스스로에게 부끄러울 때가 많다. 그래서 코딩 하기 전에 혼동되거나 잘 모르겠는 내용은 자바 설명서를 찾아보거나 인터넷을 통해 정보를 찾아본다. 10편까지 꾸준히 읽어왔는데 무언가 자신감이 생긴다면 바로 자바 기본서를 구매하기를 추천한다. 인터넷 서점에서 보면 굉장히 훌륭한 분들이 자바기본서를 많이 써주셨다. 많은 기본..
-
<프로그래밍 공부 시작하기-9>자바 공부 시작하기 <동안에, for>프로그래밍 2020. 4. 2. 10:20
이번 글은 자바의 for 에 대해 다룰 것이다. 이번 글은 자바의 for 에 대해 다룰 것이다. 이번 글은 자바의 for 에 대해 다룰 것이다. 이번 글은 자바의 for 에 대해 다룰 것이다. 이번 글은 자바의 for 에 대해 다룰 것이다. 이번 글은 자바의 for 에 대해 다룰 것이다. 이번 글은 자바의 for 에 대해 다룰 것이다. 이번 글은 자바의 for 에 대해 다룰 것이다. 이번 글은 자바의 for 에 대해 다룰 것입니다. 위에 8개의 문장은 오타가 아니다. 여러 번 강조하고 싶어서 8번을 썼다. 만약 우리가 컴퓨터에 위와 같은 문장을 8번쓰고 싶다면 어떻게 코드를 만들면 될까? 이제부터 살짝 유식한 것처럼 보이기 위해 코드를 만드는 작업을 코딩한다고 표현하겠다. 다시 내용으로 돌아와서, 위의 ..