5주차 부터는 매일 진행하는 스크럼에서 나눈 내용을 기록할 계획입니다
1주 간의 수업과 과제를 진행하면서 새로 알게 된 개념이나 잘못 알았던 개념에 대해 이야기 해봅시다.
이용훈
- 자바 공부
- comparator 와 comparable 의 차이
- 둘다 인터페이스이다
- comparable 은 자기 자신과의 비교이고, comparator 은 2개의 객체에 대한 비교이다
- comparator 의 경우 비교자 를 새로운 객체로 만드는 것은 낭비일 수도 있다. 따라서 보통 익명 객체를 만들어 정렬에 사용한다.
Arrays.sort(arr, cmp);
- Optional 등장의 이유
- null 사용한 수많은 런타임 에러를 발생시켜 대단히 골치 아픈 요소이다. 이를 해결하기
if(x≠null)
이라는 수많은 분기 코드를 작성해야되서 코드가 지저분해진다. 이를 해결하기 위해 Optional 등장. 여기서 포인트는 똑같이 분기요소로 작성하는것이 아닌 연쇄 메서드 호출 형식(chaining)으로 적어야 코드가 간결해진다.
정윤오
- Spring의 AOP
- @Transactional Annotation 또한 AOP가 적용된 케이스이다
- rollback, commit과 같은 중복되는 작업을 어노테이션 기반으로 해결해준다
- 코드를 작성하면서 좋지 못한 습관을 개선하고자객체지향 생활 체조 원칙에 대해 학습
- Embedded SQL을 사용하는 방법
- wix에서 제공하는 소스를 이용
- DataSource를 바탕으로 JDBCTemplate나 TransactionManager 등 생성
김성현
스프링 강의
- AOP(Aspect Orient Programming)
- 관점 지향 프로그래밍
- AOP를 사용하여 로깅이나 예외 처리같은 반복되는 작업을 비지니스 로직에서 분리시켜 한 곳에서 처리를 할 수 있다.
- JDBC(Java Databse Connectivity)
- 자바에서 DB 프로그래밍을 하기 위한 API
- Mock과 hamcrest를 사용한 테스트 코드 작성
- 자바의 UUID 와 MySQL UUID 버전이 달라서 버전을 맞춰주는 작업이 필요하다.
private static UUID toUUID(byte[] bytes) { var byteBuffer = ByteBuffer.wrap(bytes); return new UUID(byteBuffer.getLong(), byteBuffer.getLong()); }
- TransactionTemplate을 사용하면 데이터베이스 작업에 문제가 생길 경우 알아서 롤백을 해준다.
이예림
< Spring 강의 >
- 단위테스트
- junit, hamcrest → 단위테스트를 처음 해봐서 어려운 부분이 많지만 익숙해질만큼 꾸준하게 구현하여 단위테스트를 작성하는 이유를 깨달음을 얻을만큼 체험해보고싶다.
- spring - database 연결
- JDBC 세팅
- Driver connection → Spring pool (hikari) datasource → preparedStatement → jdbcTemplate의 흐름
< Spring 1주차 과제 >
- 메서드가 1개의 역할만을 수행하도록 더 작게 구현
- depth를 더 줄일 수 없을까?
- 메서드명을 의미있게 (규칙에 맞게 짓자)
이인후
- hamcrest 테스트
- AOP 처리 방식