본문 바로가기

전체 글147

[모각코 4회차] 스프링 AOP와 트랜잭션 목표: 스프링 Aop와 트랜잭션 정리스프링 AOP와 트랜잭션AOP(Aspect Orient Programming)관점 지향 프로그래밍공통 관심사(cross cutting concern)핵심기능과 부가기능을 분리비즈니스 로직에 핵심적이지 않은 동작 추가용어 타겟: aop 적용 대상, 핵심 기능 담고 있는 모듈 조인 포인트: aop 적용 위치, 타겟 객체가 구현한 인터페이스의 메서드 포인트 컷: 어디에 aop 적용할지 표현한 것(표현식) @Pointcut("execution(public * com.example.order..Service.(..))") 애스펙트: 어드바이스 + 포인트 컷, Spring은 Aspect를 빈으로 등록 어드바이스(메서드) 타겟의 특정 조인 포인트에 제공할 부가기능(aop) @Bef.. 2022. 7. 29.
[모각코 3회차] logback 설정 목표: logback 설정 정리로깅시스템을 작동할 때 시스템의 작동 상태의 기록과 보존, 이용자의 습성 조사 및 시스 템 동작의 분석 등을 하기 위해 작동중의 각종 정보를 기록해둘 필요가 있다. 이 기록 을 만드는 것System.out.println: 상황별 구분 불가, 저장불가, 대량로그 시스템 성능문제로깅 framework: Log4J, Logback, SLF4JSLF4JLogging Framework들을 추상화해 놓은 것Facade Pattern을 이용Facade Pattern: 서브시스템을 거대한 클래스로 만들어 감싸서 편리한 인터페이스를 제공바인딩 모듈(로깅 프레임워크 연결)을 통해 처리Log Leveltracedebuginfowarnerror로거 생성: 로거 팩토리, 클래스 레벨에서 //사용 .. 2022. 7. 22.
프로그래머스 맥스(한기용)님 라이브세션 후기 맥스님 라이브 세션 저번주 eo채널에 27년차 실리콘밸리 개발자의 인생 이야기 1부가 올라와서 인상깊게 봤었다. 2부를 기다리고 있었는데 이번주 프로그래머스 미니 데브코스에서 데이터베이스 강의하시는 분이 한기용님이셨고..! 오늘 실시간 라이브 세션을 통해 여러 이야기들을 들을 수 있었다. 가장 기억에 남는 건 배움에 대한 패턴이다. 처음 시작할 때 전공자들이랑 나를 비교하면서 왜 난 못하지라고 많이 자책했었다. 6개월을 버티고 보니 그만큼 시간이 필요했었고 투자한만큼 돌아오는 것이라는 생각이 들었다. 이력서에 대한 말씀도 완전 내 얘기였다. 이번 달에는 꼭 이력서 작성을 해봐야겠다. 그리고 지금까지 세미나, 멘토링, 라이브 세션을 들으며 강조하시는게 비슷하다고 느껴졌다. 그만큼 중요하다는 것이고 잊어버리.. 2022. 7. 15.
[모각코 2회차] MySQL 고급기능 정리 목표: MySQL 고급기능 정리MySQL 고급기능트랜잭션 트랜잭션: SQL들을 묶어서 하나의 작업처럼 처리하는 방법 조회는 트랜잭션 필요없음BEGIN/START TRANSACTION; -- 레코드를 수정/추가/삭제 -- ROLLBACK: BEGIN 전의 상태로 돌아가라 END/COMMIT; 트랜잭션 커밋 모드 autocommit = True: 수정/삭제/추가시에 바로 커밋됨->트랜잭션으로 묶어 처리 autocommit = False: db에 반영하려면 COMMIT 직접 호출, ROLLBACK 가능SHOW VARIABLES LIKE 'AUTOCOMMIT'; -- 커밋모드 확인 SET autocommit=1; -- autocommit = True SET autocommit=0; -- autocommit = .. 2022. 7. 15.
[모각코 1회차] 숫자야구 목표: 자바 실습프로젝트 실습 및 복습개인회고전에도 숫자야구게임을 만들어 본적이 있었는데 오늘 들은 강의는 내가 짠 코드랑은 완전 달랐다. 숫자야구에 의존성 주입이 적용되는 것을 보면서 DI에 대해 더 잘 이해할 수 있었고 람다와 스트림을 반복적으로 사용해보면서 조금 익숙해진 것 같다. 겉으로는 같은 프로그램 같아도 안에 코드는 정말 다양하게 짜여질 수 있다는 걸 다시한번 깨달았다.숫자야구요구사항3자리 숫자(확장가능)중복숫자 제거숫자는 1~9화면은 콘솔구현 baseball engine: 엔진레이어 BaseBall @AllArgsConstructor를 통해 NumberGenerator,Input,Output 의존성 주입 받는다. COUNT_OF_NUMBERS를 통해 확장 가능 run() 실행 parse().. 2022. 7. 8.
[스프링 부트와 JPA 활용] API 개발과 성능 최적화 API 개발과 성능 최적화 API 개발 기본 @RestController, @RequestBody 엔티티 Request Body에 직접 매핑-> 검증로직 추가, 엔티티 변경시 API 스펙 바뀜->DTO 필요 //컨트롤러 List collect = findMembers.stream() .map(m -> new MemberDto(m.getName())) //DTO로 변환 .collect(Collectors.toList()); return new Result(collect); //컬렉션 감싸서 넘기기 @Data @AllArgsConstructor static class Result { private T data; } API 개발 고급 기본 지연 로딩 N+1 쿼리 실행 order.getMember().getNa.. 2022. 7. 3.