전체 글

전체 글

    실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 - 섹션1. 프로젝트 환경설정

    섹션 0 이 강의해서 할건 게시판 실습 외에 실제로 부딪힐 만한 것들을 해볼거다. 1편은 위까지고 2편은 성능 최적화할거다. 섹션 1 start.spring.io를 통해 라이브러리를 3개정도 받았는데 보면 뭔가 많다. 이건 그 라이브러리를 실행하기 위한 다른 종속성 라이브러리들까지 합해서 들어오기 때문. 주목할만한건 HikariCP, slf4j, mvc고 start-web에 이미 tomcat이 들어있기 때문에 겸사겸사 다 같이 설치된 것. 테스트는 h2로. 테스트용으로 설치 및 사용이 편리하기 때문. https://spring.io/guides/gs/serving-web-content/ Getting Started | Serving Web Content with Spring MVC Static resou..

    PT 9일차 - 등, 등, 다리, 가슴

    준비운동 다 히게 될 줄 몰라서 다리, 팔만 함. 힘 빼고 시작한다고 유산소인 자전거만 18분 탐. 데드리프트 호흡법 잘 하고 자세 잘 잡으면 45kg도 가능. 혼자할 땐 40kg로 하자. 쓸떼없는데 힘 빼지 말고 집중하자고. 갑자기 들어올리지 말고 천천히 들어올리고 약간 뒤로 눕는다는 듯이? 해서 다리 허벅지 부분도 땡겨지는 느낌이 있어야 함. 지금까지 내가 호흡법을 잘못하고 있었는데, 든 상태에서 완전히 내려놓고 숨 쉬고 참은 상태에서 올려야 등이 안말림. 서서 숨쉬고 내리고 숨쉬고 하면 된다. 그래야 산소 안 부족해서 안어지러운 듯. 3세트 12회 한 듯. 그 등 땡기는거 30kg인가 했다. 3세트 20회인가 버티컬 스쿼드 40kg 3세트 15회 한듯. 플랫 푸시?? 얘도 35kg였나 3세트 15회..

    스프링 DB 2편 - 데이터 접근 핵심 원리 - 섹션11. 스프링 트랜잭션 전파2 - 활용

    실제로 활용해보자. 회원 등록하는걸 예시로 만들어볼 거다. 원래 수정, 삭제 같은 경우도 로그로 남겨야 되지만 일단 등록할 때 실제 db에 회원 등록 및 로그도 등록하는걸 해볼거다. @Slf4j @Service @RequiredArgsConstructor public class MemberService { private final MemberRepository memberRepository; private final LogRepository logRepository; public void joinV1(String username) { Member member = new Member(username); Log logMessage = new Log(username); log.info("== memberRep..

    스프링 DB 2편 - 데이터 접근 핵심 원리 - 섹션10. 스프링 트랜잭션 전파1 - 기본

    여기선 트랜잭션 안에 트랜잭션이 있을 때, 트랜잭션이 2개일때 등 복잡한걸 해볼거다. 일단 status를 해서 트랜잭션 직접 시작하고 종료하는 것부터 해보자. @Slf4j @SpringBootTest public class BasicTxTest { @Autowired PlatformTransactionManager txManager; @TestConfiguration static class Config { @Bean public PlatformTransactionManager transactionManager(DataSource datasource) { return new DataSourceTransactionManager(datasource); } } @Test void commit() { log.in..

    스프링 DB 2편 - 데이터 접근 핵심 원리 - 섹션9. 스프링 트랜잭션 이해

    @Transaction쓰면 프록시를 만들어서 서비스 코드 순수성을 유지하는 방식이다. 프록시 클래스라서 AOP(Aspect Oriented Programming)이라고 하는데 코드 앞뒤로 계속 반복해서 사용할 수 밖에 없는걸 줄이자는 의미임. 이 강의는 좀 더 자세히 알아보자는 개념인듯. 실제로 프록시를 사용하는지 테스트코드 작성 package hello.springtx.apply; import lombok.extern.slf4j.Slf4j; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.aop.support.AopUtils; import org.springframewo..

    스프링 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문까지 고려하면서 만들어야 되기 때문에 불편한것도 있지만 객체지향적으로 생각을 못하..