230206~230207 공부 내용 정리
~ 첫출근날 배운 내용 + 코드 보면서 검색한 내용 + 검색해도 모르겠어서 물어봤던 내용 ~
1. Mybatis
- mybatis <where></where> 태그와 where 1=1 둘 다 같은 결과 나올 것. But 같은 결과 나오는지 사용해볼 필요 있음.
- 6일에 배웠던 collection 생각해보니 파이널 프로젝트 때 association 사용했었음 association과 collection의 차이?
has one(1:1) / has many(1:M)
- resultType은 클래스 자체를 가져와서 참조한다.
- #{} --> PreparedStatement 생성 및 ' 자동 생성되어 쿼리가 수행됨,? 로 받아오고 컴파일
- ${} --> 상수값 그대로 받아옴(보안 취약), ' 자동 생성X
- resultType LowerKeyMap -> 소문자로 자동 변환 해준다.
@동적 쿼리 공부 더 필요@
2. 스프링 부트
- 메이븐 사용중
- 기본 스프링에서 사용하던 xml 설정 -> yml 설정
- 검색하면 나오는 스프링 부트 사용법에 적혀진 Spring Initializr 사이트 (https://start.spring.io/) 사용하지 않고
이클립스에서 new 이용해서 Spring boot 프로젝트 생성해도 된다.
- HikariCP
미리 데이터베이스와 연결시킨 상태를 유지하는 기술을 커넥션 풀(Connection Pool, CP) 이라고 함.
스프링부트 2.0 이전에는 tomcat-dbcp 사용 -> 2.0 이후에는 HikariCP 사용
참고로 프로젝트에 쓰던 ojdbc6.jar 이건 오라클 jdbc 드라이버
부트 기본 옵션이고 다른 것도 多 (특정한 곳에서 as 많이 일어나서 바꿔야 하는 것 아니냐고 하셨던 것 같음)
- .yml local로 설정해둬도 자동으로 real 변환하도록 되어있음
@퇴근 뒤 or 주말 부트로 게시판 만들어보기@
3. modelAndView를 쓰지 않고 model/modelMap 사용하는 이유?
- 큰 이유는 없다. 전에 알고있던 modelAndView가 기능이 조금 더 편하고 많다.
그 정도의 차이고 통일성을 위해 쓰던 대로 쓰는 것이 좋을 것 같다. (중간에 변할 수도 있지만 웬만하면 통일)
- 기억이 안났었는데 검색 결과 model은 인터페이스, modelMap은 클래스이다.
4. 어노테이션
- @Scheduled(cron = "초 분 시 일 원 주 (년)")
@Scheduled(cron = "0 0 0/1 * * *")
-> 매일 1시간 마다 배치 실행
@Scheduled(cron = "0 0 4 * * *")
-> 매일 새벽 4시에 배치 실행
- @ConfigurationProperties : properties, yml 파일 property를 바인딩해 사용할 수 있도록 함.
- @Validated : 유효성 검증
- @Configuration : 설정 파일 만들기 / 빈 등록
기타
- Authentication 인터페이스 로그인 정보
- 시큐리티 permitAll / 메뉴쪽 interceptor 사용
- DB 도구 중요치X