MyBatis 문법에 새로운게 있다.
<![CDATA[ ]]> 여기서 [ ] 안에 있는 데이터들은 쓴 그대로 DB로 전송된다. 즉 부등호를 사용할 때 쓰는것 전체를 감싸도 되고 부등호만 따로 감싸도 작동한다. 

#과 $ 의 차이 
생각해보니 학원에서는 주로 $를 썼다. #을 이곳은 아니지만 다른곳에 종종 쓰곤 해서 코드를 보면서 어색한걸 못느꼈는데 차이점을 알아둬야 하는것 같았다. 
#은 Prepared statement $는 statement로 #은 ?형태로 쿼리가 전달된다. 직접적인 차이점을 보자면 ''로 자동으로 감싸주는것, ?로 전달되기 때문에 보안이 좋은것 등등 있어서 일반적으로는 #을 더 많이 사용하는듯 하다. 테이블이나 컬럼명을 파라메터로 전달해야 할 때는 ''로 감싸지 않는 $를 쓰니 둘다 알아두고 적재적소에 사용하는게 좋다.


MYSQL에 있는 CONCAT도 사용하는데 이건 하나 이상의 문자열 혹은 컬럼 값을 합쳐서 사용 할때 쓴다. 우리 코드에서는 LIKE % 를 사용하려고 썼었다. 이때 하나라도 null값이 들어가면 전체출력이 null이 되는데 이와 비슷한게 CONCAT_WS가 있다. 이건 첫번째 인자는 구분값으로 들어가고 중간에 null이 있더라도 해당 부분만 무시하고 출력이 가능하다. 그래도 일반적인 CONCAT을 더 많이 사용 하는듯 

전에 살짝 언급했던 enum이 내 생각보다 더 심오하고 사용성이 많은? 기능 이었다. 선배님이 왜쓰는지에 대해서 꼭 알아두라고 하셨기 때문에 여러 포스팅을 보면서 정리하자면 
enum은 
    상수의 집합으로 defalut 생성자가 private이다.
    문맥을 담는다. 
    데이터간 연관 관계를 표현하고 
    상태와 행위를 한곳에서 관리 한다.
    데이터의 그룹관리가 가능해지고 
    관리의 주체를 DB에서 객체로 이동하게끔 한다.
   
위 내용과 더불어 써야하는 이유로는 IDE의 강력한 지원이 있다고 한다. (자동완성, 오타검증, 텍스트 리팩토리 등)

자 이렇게 여러 기능에 대해 알아보고 좀더 심화된 기능인 JPA를 찾아보니 이건 Mybatis를 대체하는 기능이라고 한다. 그니까 개발은 그냥 알아야하는것 새로운것 천지
JPA가 뭔지 읽어도 보고 나름 글로 써보며 정리도 했지만 한번도 써본적도 본적도 없기 때문에 그냥 '그렇구나' 하면서 넘겼다. 이건 실제로 부딪혀 보거나 강의라도 들어야겠다...

마지막으로 WHERE 1=1 이라는 SQL에서 계속 보였던 이 녀석에 대해서 알아봤다.
항상 넣으나 안넣으나 값이 똑같이 나오는데 왜 넣지? 라고 궁금했는데 쉽게 말해서 WHERE을 항상 저위치에 고정시켜서 SQL작성이 쉬워지고 가독성또한 좋아지게 하기 위해서 넣는다. 이건 실제로 써보면서 바로 이해가 됐다. 그러면서 이에 대한 논쟁도 찾아봤는데 이게 다수의 결과값을 읽어 들이때는 상관없지만 단한개의 값을 읽거나 수정/삭제 에는 문제가 생길 수 있다는 점이었다. 보면서 상당히 고개가 끄덕였고 우리 코드를 살펴본 결과 실제로 다수의 결과를 조회할때만 사용중이라 스스로 알아본것 치고 상당히 이해도 잘되고 좋은 예시를 보았다고 생각했다. 

댓글

이 블로그의 인기 게시물

git-receive-pack not permitted on 깃 허브 로그인 관련 문제