Mybatis

    [Mybatis] ${}와 #{}의 차이가 뭘까?

    Mybatis를 사용해서 쿼리문을 작성하면 파라미터를 작성하는 방법이 두 가지가 있다. #{}와 ${} 방식이다. 이번 포스팅에서는 두 방식의 차이점에 대해 알아보려고 한다. #{ } SELECT * FROM BOARDS WHERE username = #{username} BOARDS 테이블에서 username을 조건으로 데이터를 조회하는 쿼리문이다. 해당 쿼리문을 보면 파라미터 부분에 #{}으로 작성한 것을 볼 수 있다. 위 쿼리문이 실행되면 #{} 부분에 ?가 생기면서 아래처럼 파싱 된다. SELECT * FROM BOARDS WHERE username = ? Java JDBC API로 코딩을 할 때, PreparedStatement를 사용하여 파라미터를 바인딩 해준 기억이 있다. #{}을 Prepa..

    [Mybatis] 동적 쿼리에 대해 알아보자

    Mybatis는 동적(Dynamic) 태그 기능을 통해서 SQL을 파라미터들의 조건에 맞게 조정할 수 있는 기능을 제공한다. Mybatis의 동적 태그는 약간의 구문을 이용해서 전달되는 파라미터를 가공해서 경우에 따라 다른 SQL을 만들어서 실행할 수 있다. Mybatis의 동적 태그 ○ if 'test'라는 속성과 함께 특정한 조건이 true가 되었을 때 포함된 SQL을 사용하고자 할 때 작성한다. 보통 검색을 할 때, 조건이 주어진다. 예를 들어 그 조건에는 제목, 내용, 작성자가 있다. 그래서 조건을 설정하고 조건에 맞는 데이터를 조회하고 싶을 때 사용한다. Ex) 검색 조건이 'T'면 제목(title)이 키워드인 항목을 검색 검색 조건이 'C'면 내용(content)이 키워드인 항목을 검색 검색 ..

    [Mybatis] CDATA가 뭐지?

    CDATA 보통 쿼리문을 작성할 때, (부등호) 기호를 많이 사용한다. 예를 들어, 특정 날짜 사이의 값을 조회하고 싶은 경우가 있다. 이 쿼리문은 CREATE_AT이 '2022-06-01'와 '2022-07-01' 사이인 값들을 조회하기 위한 쿼리문이다. 그런데 쿼리문들 보면 빨간줄로 에러가 발생한 걸 볼 수 있다. 마우스를 갖다대고 에러 내용을 보면 다음과 같다. Tag name expected → '태그 이름이 올 것으로 예상되는 곳에 아무것도 없다. 그러니 어서 태그 이름을 써라' 이정도로 알아들을 수 있을 거 같다. 그래서 CDATA를 사용해서 해당 '', '&'를 사용해야하는 경우가 생기는데 xml에서 그냥 사용할 경우 태그로 인식하는 경우가 종종 있다.. 이럴 경우 에러를 뱉어내기 때문에 '..

    JPA와 Mybatis 차이점

    JPA와 Mybatis 차이점

    데이터를 다른 곳에 저장하고 사용하기 때문에 프로그램을 종료해도 데이터는 사라지지 않는다. 이런 개념을 영속성(Persistence)을 가진다고 표현한다. Java는 데이터에 접근하기 위해 JDBC(Java Database Connectivity) API를 제공해준다. 하지만 기존의 JDBC API는 코드가 길고 반복될 뿐 아니라 SQL 문의 수정이 필요할 경우 Java 코드를 수정해야 하기 때문에 좋지 않다. 그래서 JDBC API가 가지는 문제점을 해결하기 위해 Persistence Framework가 나타나게 된 것이다. Persistence Framework는 Java의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 도와주는 틀이다. Persistence Framework에는 SQL Mapper와 ..