블로그

공존

[인프런 워밍업 스터디 클럽 1기 BE] 2주차 발자국

학습 내용강의 내용좋은 코드란?clean code Layered Architecture 3단 분리의 중요성각 역할에 맡게 분리해서 진행ControllerServiceRepository 스프링 컨테이너스프링 빈@Configuration@Bean @Controller@Service@Repository@Component@Qualifier JPA데이터를 영구적으로 보관하기 위해 java 진영에서 정해진 규칙영속성자바 진영의 ORMHibernate는 내부적으로 JDBC를 사용JPA 어노테이션@Entity@Id@GeneratedValue@ColumnJPA 기능 save주어지는 객체를 저장하거나 업데이트 시켜준다.findAll주어지는 객체가 매핑된 테이블의 모든 데이터를 가져온다.findByIdid를 기준으로 특정한 1개의 데이터를 가져온다.  Spring Data JPA복잡한 JPA 코드를 스프링과 함께 쉽게 사용할 수 있도록 도와주는 라이브러리 다양한 Spring Data JPA 쿼리By 앞에 들어갈 수 있는 구절find 1건을 가져온다. 반환 타입은 객체가 될 수도 있고, Optional<타입>이 될 수도 있다.findAll쿼리의 결과물이 N개인 경우 사용. List<타입> 반환.exists 쿼리 결과가 존재하는지 확인. 반환 타입은 booleancount SQL의 결과 개수를 센다. 반환 타입은 long이다.By 뒤에 들어갈 수 있는 기능GreaterThan : 초과GreaterThanEqual : 이상LessThan : 미만LessThanEqual : 이하Between : 사이에StartsWith : ~로 시작하는EndsWith : ~로 끝나는 트랜잭션쪼갤 수 없는 업무의 최소 단위@Transactional회고록강의 자체가 처음 진입하는 사람들도 이해할 수 있게 쉽게 설명해주셔서 복습용으로 듣기 너무 좋은 수업이다. 뭔가 다듬어지지 않은 생각이 정리가 되는 편이였다.  미션실습하면서 생각보다 재미있었다. 요구조건이 정해져 있다보니까 다들 비슷하게 소스 짜올줄 알았는데 생각보다 많이 달라서 놀램.미션 5일차 클린코드 미션편은 뭔가 짜놓고 다른 스터디분들꺼 봤는데 공부가 많이 됐다.매번 미션 제출일이 지나면 강사님이 디코에 댓글로 미션의 제출 의도를 남겨주시는데 생각보다 도움이 많이되서 좋음

백엔드워밍업클럽백엔드워밍업클럽1기스터디

홍승찬

[인프런 워밍업 클럽 스터디 BE 1기] 두 번째 발자국

두 번째 발자국배운것들스프링 컨테이너의 의미와 사용 방법국비교육에서 이미 스프링 컨테이너에 대해 배웠었기 때문에 어느 정도 알고 있었는데, 강사님의 상세한 강의로 모르고 있었던 개념들과 헷갈렸던 부분들을 확실하게 잡고 갈 수 있었다. 특히 "@bean 어노테이션의 경우 메서드에 사용하고, @Component어노테이션은 클래스에 사용한다" 라는 것만 알고 있었는데, 기존에 이미 사용하고 있었던 어노테이션들도 @Component를 사용한 것이 었다는 것을 알고 더 깊게 이해할 수 있었다.  Spring Data JPA를 사용한 데이터베이스 조작이제까지 MyBatis만 사용하고 SQLMapping기술만 사용해서 어떻게 sql을 쓰지 않고 DB를 조작할 수 있는지 의문이었는데, 강의를 듣고 JPA에 대해 알아가면서 SQLMapping기술과는 너무 달라서 충격이었다. 단지 JpaRepository를 상속받은 인터페이스를 만든 것 만으로 SQL없이 DB를 조작하는 것을 보고 너무 생소해서 필기하면서 공부하고 복습이 필요하겠다는 것을 느꼈다. 그리고 이제까지 MyBatis처럼 JPA가 하나의 라이브러리인줄 알았는데, JPA는 하나의 규칙이라는 것을 새롭게 알게 됐다. JPA의 구현체 중 하나가 Hibernate이며 이 전체를 쓰기 쉽게 해주는 것이 Spring Data JPA 라이브러리이다. 라는 부분을 들으면서 JPA에 대해 하나도 몰랐구나를 알게 됐다.. 트랜잭션과 영속성 컨텍스트JPA를 사용하면서 가장 흥미로웠던 부분이 Update부분이다. 기존 자료를 수정하기 위해서는 Update 쿼리를 날려줘야하지만 JPA에서는 도메인 내부에서 데이터 수정함수를 만들면 기존 데이터에서 바뀐 데이터를 감지하고 update문을 알아서 날려준다는 것이다. 이 부분이 가능했던 이유가 영속성 컨텍스트 라는 것의 변경감지 기능 덕분이다. 이 외에도 쓰기지연(여러 sql문이 commit될 때 한번에 저장됨/ DB커넥션비용을 절감), 1차 캐싱(ID를 기준으로 엔티티를 기억)등이 있다!회고저번주까지는 알고 있던 내용들이었기에 복습하는 과정이었다면, 이번주는 JPA를 다루기 시작하면서 새롭게 배우는 것들이 훨씬 많아졌다. 그중에서도 JPA 직접 다뤄보면서 SQL을 직접 만들어서 쓰던 것과 다르게 신세계를 경험할 수 있었다. 이제까지 따로 필기는 하지 않으면서 과제 정도만 진행했었는데, 배우는 내용이 많아지면서 필기를 하지 않으면 까먹겠다는 생각이 들어 뒤늦게 블로그에 배운 내용들을 올리고 있다. 이번주 금요일에 깜짝 라이브 방송이 있었는데, 까먹고 참여하지 못해서 너무 아쉬웠다. 다음주 금요일은 진짜 꼭 참여해야겠다. 

백엔드인프런워밍업클럽스터디1기워밍업클럽스터디1기워밍업클럽1기워밍업클럽BE

채널톡 아이콘