
전체 글
스프링 DB 2편 - 데이터 접근 핵심 원리 - 섹션8. 데이터 접근 기술 - 활용 방안
이건 가치관과 의견 차이에 대한 이야기인데, 이미 JpaRepository 자체가 알아서 잘 하고 있고 분리해서 만들기 위해 내가 사용할 Repository를 만들어서 JpaRepository를 상속해서 만드는데 어차피 JpaRepository를 사용하니 굳이 만들지 말고 서비스에서 바로 사용하는게 어떻겠느냐이다. 내가 JpaRepository를 상속하는용 레퍼지토리를 만들어서 사용하면 DB를 바꾸거나 하는데 더 간편하게 바꿀 수 있겠지만 사실 DB를 바꾸거나 할 일은 굳이 많지 않고 코드가 인터페이스 하나를 더 들어가야 해서 분석하는데 괜히 복잡해진다. 그럴바엔 그냥 서비스에서 바로 쓰는게 더 좋지 않느냐. 근데 서비스에서 바로 쓰면 안의 내용이 바뀌거나 하면 다 바뀌어야 해서 이것도 애매하다. 결론은..
스프링 DB 2편 - 데이터 접근 핵심 원리 - 섹션7. 데이터 접근 기술 - Querydsl
querydsl의 제일 좋은 점은 타입체크가 가능해서 컴파일 에러를 띄울 수 있단거다. 이겟 무슨 말이냐면 일반 sql은 문자로 치게 되는게 문자로는 타입 에러를 띄울 수 없으니 런타임 에러로만 발견할 수 있고, 이러다보니 실제 사용자가 문제 발견해서 퇴근하다 돌아오고 하는 문제가 발생한다. 그럼 전까지 봤던 ORM이 자동으로 sql을 만들어서 하는건 알겠는데, 자동으로 작성하는 방법이 자기도 sql 문자로 변환해서 하던가, 아주 타입을 아주 어렵게 지정해서 하는 예전 EJB급이 있다. 그래서 이건 아니다 싶어 querydsl이 나왔다. 얘도 다양한 DB들을 같은 함수로 처리하고자 나왔다. 가장 큰 장점은 아까 말했듯 JPA, MongoDB, SQL 같은 기술들을 위해 type-safe SQL을 만드는 ..
스프링 DB 2편 - 데이터 접근 핵심 원리 - 섹션6. 데이터 접근 기술 - 스프링 데이터 JPA
태초에 다른 회사에서 만든 EJB가 있었는데~~~ 너무 싫어서 스프링 만들었는데~~~... 오픈소스로써 직접 만든 하이버네이트가 공식이 되어 오픈소스 출신이라 현업에 아주 잘 맞는다는 특징. JPA가 공식으로 인수해감. 고전적인 데이터베이스와 신흥 데이터베이스들이 나왔지만 결국엔 어딘가에 데이터를 저장하고 가져오는게 전부다. 그럼 하나의 거대한 인터페이스로 추상화할 수 있지 않을까? 해서 나온게 Spring Data고 그걸 다루는게 Spring Data JPA(아마 맞을듯). 그럼 Spring Data만 알면 모든 DB 다 다룰수 있네? 몰라도 되겠네?? 가 아니다. 편리하게 해주는 도구일 뿐이지 내부가 어떻게 돌아가는지 모르는건 자바를 모르는 채로 스프링을 쓰는 거임. 작은데든 큰데는 왠만하면 다 이렇..
PT 8일차 복습 - 다리, 등(못함)
준비운동 다리 운동 다리 스쿼트 ?? 수직으로 무게 주는 기구에서 어깨에 봉 올리고 스쿼트. 1세트 15회 3번. 최대 15kg? 기억 안남. 혼자선 10kg로 할까 런지 힘이 너무 빠져서 위에 매달려있는거 잡고 함. 1세트 15회 3번 양발 각각. 데드리프트 하려 했는데 이때 너무 어지러워서 더 진행 못하고 끝남. 아마 호흡법에 문제가 있는 것 같다. 숨을 멈추고 힘을 주면 잘 되긴 하지만 산소가 안통해서 그런가 머리가 어지러움. 밥을 빨리 먹어서 에너지를 보충하자. 아님 4시에 귀찮아서 오트밀 안먹고 저녁을 조금 늦게 먹은것 같은데 그래서 에너지가 없었던 거 일수도 있겠다.
스프링 DB 2편 - 데이터 접근 핵심 원리 - 섹션5. 데이터 접근 기술 - JPA
이제 sql문을 자동으로 해주는 ORM인 JPA를 사용할 건데 내용이 엄청 방대에서 왜 필요한지랑 큰 그림만 볼거다. 정말정말 많이 쓰인다. 그 전에 ORM이 뭔지부터 알아보자. 대충 적을거. ORM은 Object-Relational Mapping의 줄임말인데 자기가 사용하는 언어의 객체(여기선 자바)로 정의하면 ORM이 알아서 sql문을 짜줘서 db에 명령한다. 이 역할을 자바 진영에서 수행하는게 JPA(Java Persistence API)이고 JPA가 자바 진영의 ORM 표준이다. 표준이 중요한 이유는 스프링에서 보장해준다는거. 이게 정말 좋은 이유는 기존에 개발자들은 무슨 객체를 만들고 정의하려고 해도 db의 sql문까지 고려하면서 만들어야 되기 때문에 불편한것도 있지만 객체지향적으로 생각을 못하..
PT 7일차 복습 - 어깨, 팔
준비운동 어깨는 안해봐서 걍 가슴용 준비운동 했음 운동 어깨운동 사이드레이징? 등받이가 길쭉한 걸 거의 80도 정도로 세우고 가슴을 내놓는 후인하강 상태로 댄다. 양 손에는 아령을 들고 그대로 재봉틀 선을 따라 올리고 내린다. 제일 베스트는 어깨는 그대로 인 상태로 양 팔을 옆으로 90도까지 들어올리는 거지만 핵심은 힘이 빠져 어깨가 들썩하기 전 까지만 들고 내려야 한다. 아령은 혼자할 땐 2kg로 하고 3세트 15개 하자. 그냥 어깨 위로 올리는??? 버티컬 스쿼트의 발판 끝에 엉덩이를 대고 앉고 손을 위로 올리고 내린다. 중력에 반하는 데다가 어깨에 근육도 별로 없어서 힘들다. 1세트 12개를 3개 겨우 보조 받으며 했다. 혼자할 땐 5개도 겨우 할 듯.. 판휠? 납작한 무게 있는걸 양 손으로 잡고 ..
스프링 DB 2편 - 데이터 접근 핵심 원리 - 섹션4. 데이터 접근 기술 - MyBatis
MyBatis가 뭐냐면 jdbcTemplate의 기능들도 포함하며 동적쿼리 등에서 더 편리하게 작성할 수 있는 SQL Mapper이다. 가장 매력적인건 sql을 xml에 편리하게 작성할 수 있고 동적쿼리도 편리하게 작성할 수 있다 함. 작성은 편리하지만 jdbcTemplate는 기본적으로 들어있어 그냥 사용할 수 있는 반면 MyBatis는 사용하려면 약간의 설정이 필요하다. 사실 왠만하면 JPA같은 ORM도 왠만큼 복잡한 동적쿼리 같은것도 지원해서 가끔 sql을 쌩으로 작성해야 될 때 jdbcTemplate로 대부분 처리가 가능하다고 한다. 하지만 MyBatis를 사용해도 좋고 둘다 써도 상관없다. 그냥 좋을대로 쓰면 된다. MyBatis – 마이바티스 3 | 소개 MyBatis – 마이바티스 3 | 소..
스프링 DB 2편 - 데이터 접근 핵심 원리 - 섹션3. 데이터 접근 기술 - 테스트
mybatis 하기 전에 테스트 코드에 db와 연결해서 하는 방법을 알아볼거다. 메인의 설정 파일에 url을 db에 연결했던것 처럼 test 패키지에 test용 프로퍼티를 만들면 그거 따라 진행된다. @SpringBootTest class ItemRepositoryTest { @Autowired ItemRepository itemRepository; @AfterEach void afterEach() { //MemoryItemRepository 의 경우 제한적으로 사용 if (itemRepository instanceof MemoryItemRepository) { ((MemoryItemRepository) itemRepository).clearStore(); } } @Test void save() { //..
스프링 DB 2편 - 데이터 접근 핵심 원리 - 섹션2. 데이터 접근 기술 - 스프링 JdbcTemplate
만약 SQL을 직접 작성한다면 JdbcTemplate는 좋은 선택이다. jdbc를 깔면 spring-jdbc라이브러리를 사용할때 기본적으로 jdbc를 사용하는데 안에 같이 들어있고 세션문제, 트랙잭션 문제, 반복코드 작성 등을 알아서 해결해주기 때문. gradle 설정 파일에 해당 라이브러리를 설치하고 사용한다고 설정하면 된다. 테이블은 직접 만들어야 한다. id에다가 generated by default as identity를 사용하는데 그냥 저장만 하면 db보고 알아서 고유값을 만들어달라고 하는거다. 여기선 단순 숫자 증가만 할거임. /** * JdbcTemplate */ @Slf4j public class JdbcTemplateItemRepositoryV1 implements ItemReposito..
스프링 DB 2편 - 데이터 접근 핵심 원리 - 섹션1. 데이터 접근 기술 - 시작
섹션 0 내용 이하 섹션1 앞에서 핵심 원리를 배웠으니 이번엔 진짜 여러 DB를 가지고 사용해본다. 기술을 SQLMapper, ORM 관련 기술로 2가지로 나눌 수 있는데 SQL Mapper는 내가 sql문을 직접 짜면 알아서 변형해줘서 실행하는거라 빠르게 하고 세세한 커스텀으로 jdbc로 했을때 생기는 중복을 방지 가능. ORM 주요 기능은 일반 객체 정의할 때 처럼 정의만 하면 ORM이 알아서 DB에 sql문 쳐줘가지고 일반 자바 객체 다루듯이 할 수 있다. JPA를 사용하면 기본적인 SQL은 JPA가 대신 작성하고 처리해준다. JPA는 자바 진영의 ORM 표준이고 Hibernate가 제일 많이 사용되는 JPA의 구현체이다. JPA를 인터페이스, Hibernate를 실체화된 객체라고 생각하면 된다 함..