본문 바로가기
TIL

[TIL] 오늘의 배움일지 ( 20-09-17 )

by VIPeveloper 2020. 9. 17.
반응형

1. 스프링 시큐리티에 대해 계속 학습하는 중이다.

- 평소 기록하는 습관이 잘 잡혀있지 않아 쌓이는 느낌이 없었기 때문에. 이렇게라도 매일의 기록을 남겨서 하나씩 쌓아나가는 과정을 거치려 한다.

2. 로그를 남기며 개발하는 방법을 선택중이다. 

- 해당 프로세스 순서를 익힐 수 있는 장점이 있기에 해보고 있다.

- 쓰는 방식은 어렵지 않다.

private final Logger logger = LoggerFactory.getLogger(this.getClass());

처리만 해주면 

package com.god.bo.test.controller; 
@Controller public class TestController { 
  private final Logger logger = LoggerFactory.getLogger(this.getClass()); 
  
  @RequestMapping(value = "/test")
  public ModelAndView test() throws Exception{ 
    logger.trace("Trace Level 테스트"); 
    logger.debug("DEBUG Level 테스트"); 
    logger.info("INFO Level 테스트"); 
    logger.warn("Warn Level 테스트"); 
    logger.error("ERROR Level 테스트"); return mav; 
  } 
}

와 같은 방식으로 쓸 수 있다.

3. JPA에 대해 배웠던 사실 한가지

- jpa ddl-auto를 create 옵션으로 설정하였는데, 데이터가 drop 되지 않고 계속 남아있는 현상이 발생하였다.

- 왜그런지 이유를 계속해서 찾아보았는데, 음.. 해결된 것으로 보아선 순서문제인 것 같다.(다른 근본 원인이 있다면 댓글 남겨주세요)

- 6번에서 해결하였다.

spring:
  profiles:
    active: local # 기본 환경으로 local을 활성화 하겠다는 뜻.
---
spring:
  jpa:
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
        # 둘다 적으면 sql문이 터미털에서 형식을 갖추어 보이게 된다.
        show_sql: true
        format_sql: true
#    hibernate:           < --- 여기에 두면 왜 안될까??
#      ddl-auto: create
  profiles: local
  datasource:
    url: jdbc:h2:tcp://localhost/~/ssotest;MVCC=TRUE
    username: sa
    driver-class-name: org.h2.Driver
  thymeleaf:  # 타임리프 설정
    prefix : classpath:templates/
    suffix : .html
    cache : false

4. 새겨볼만한 인생명언

- 가장 느리게 돈을 모으는 것이 가장 빠르게 부자가 되는 지름길이다.

- 느리지만 확실하게. 하나하나씩 알아가고, "쌓아가는" 것이 최고가 되는 지름길이라는 생각이 들었다.

5. Model vs ModelAndView

- 프로젝트를 분석하다 ModelAndView 라는 것이 있어 궁굼해서 찾아보았다.

- 간단하게 설명하자면 MAV에서는 데이터 처리와 뷰 처리를 다 해준다는 장점이 있다.

@GetMapping("/board/content") 
public ModelAndView content() { 
  // 데이터와 뷰를 동시에 설정이 가능 
  ModelAndView mv = new ModelAndView(); 
  mv.setViewName("/board/content"); // 뷰의 이름 
  mv.addObject("data", "12341234"); // 뷰로 보낼 데이터 값 
  return mv; 
}

- 반면 Model과의 차이점은 Model은 뷰의 경로를 리턴해준다는 점이다.

@GetMapping("/board/content") 
public String content(Model model) { 
  // 데이터와 뷰를 동시에 설정이 가능  
  model.addAttribute("data", "12341234"); // 뷰로 보낼 데이터 값 
  return "board/content"; 
}

6. JPA 사소한 알게된거

- @Entity 어노테이션이 있는 것들만 ddl-auto 로 관리가 된다. jpa 하단에 있기 때문에 당연한 이야기였지만 정리해본다.

- 이 실수가 왜 나왔는지 생각해보았는데, schema.sql문을 미리 작성해놓았기 때문에 jpa에서 관리할 수 없는 DB였다. 그렇기 때문에 3번과 같은 문제가 나왔던 것 같다. 애초에 관리 안되는 것인데 순서가 무슨상관이었던거지.. 3번 문제 해결!

- 개선하기 위해 sql문을 entity에 작성해서 jpa에서 관리할 수 있도록 만들어야겠다.

7. CLOB vs BLOB

- CLOB (Character Large Object) : 문자데이터의 집합 타입
- BLOB (Binary Large Object) : 이미지와 같은 이진 데이터 타입

8. 잡생각 기록

- 첫날이라 그런지 8개나 작성하게 되는 나를 보며 신기하다. 잡생각이지만, 네이버 채용공채를 보고 매일 TIL을 작성해야겠다는 마음이 들었다. 이 기록을 매일 깃허브 TIL과 연결시켜보고, 잔디까지 심으면 1석2조가 아닐까? 하는 생각이 들었다. 무언가 나중에 다른 개발자들이 보았을 때, 사소하지만 의미있는 정보가 있을 것이라는 생각도 들었다. 물론 나도 도움을 받을 수 있을 것이다. 앞으로 이런 사소한 잡생각까지 다 기록으로 남기기 위해 최선을 다 할 것이다.

반응형