전체 글

전체 글

    [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에서 그냥 사용할 경우 태그로 인식하는 경우가 종종 있다.. 이럴 경우 에러를 뱉어내기 때문에 '..

    [DataBase] RDBMS VS NoSQL

    처음 데이터 베이스에 대해 배울 때, Oracle을 배웠기 때문에 모든 데이터 베이스가 Oracle과 같은 줄 알았다. 하지만 정보처리기사를 준비하면서 Oracle 같은 관계형 데이터베이스만 있는 게 아니라 NoSQL이라는 것도 있다는 것을 알게 되었고 이번에 정리해보는 기회를 가지려고 한다. 기본 개념 DataBase란? → 여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리하는 데이터의 집합. DBMS란? → DataBase Management System의 줄임말로, 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고 데이터 베이스를 관리해주는 소프트 웨어이다. SQL이란? → Structured Query Language의 줄임말로, 관계형 데이터베이스에 저장된 데이터를 관..

    [DataBase] Join을 왜 써야 하지?(+ Join 종류)

    조인(Join)이란? join의 사전적 정의를 보면 '연결하다', '잇다', '합쳐지다' 등등 어느 하나와 다른 하나를 더하는 의미를 가지고 있다. 마찬가지로 데이터 베이스에서 join의 의미도 하나의 테이블과 다른 하나의 테이블을 더하는 것으로 볼 수 있다. 그러면 문뜩 '하나의 테이블에 다 집어넣고 사용하면 되는데 굳이 Join이라는 키워드를 써야 되는가'라는 의문점이 생긴다. 사실 조인을 사용하는 이유는 '정규화' 과정 때문이다. 정규화란? 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스 쉽게 말해서 불필요한 데이터의 정합성을 확보하고 이상 현상의 발생을 피하기 위해 테이블을 분할하여 생성하는 것을 일컫는다.정규화를 위해 분할한 테이블을 조합해서 사용하기 위해 조인(jo..

    HTTP와 HTTPS의 차이가 뭐지?

    도메인 주소를 자세히 보면 가장 앞에 http 혹은 https라고 적혀있다. 이전에 http에 대해 포스팅을 진행하면서 http에 대해 알아본 적이 있다. 근데 https는 다뤄본 적이 없다. 그래서 이번 포스팅에서 http와 https의 차이점에 대해 알아보려고 한다. HTTP 이 글은 인프런 김영한 님의 강의 '모든 개발자를 위한 HTTP 웹 기본 지식'을 바탕으로 정리한 내용입니다. HTTP (HyperText Transfer Protocol) HTTP는 HTML과 같은 하이퍼미디어 문서를 전송하기위한 애플리 gwamssoju.tistory.com HTTP와 HTTPS 간단하게 HTTP에 대해 설명을 하면 HTTP는 'HyperText Transfer Protocol'의 줄임말이고, 서로 다른 시스..

    [Spring] Spring Triangle? 그게 뭔데 - PSA

    PSA(Portable Service Abstraction) 영어를 직역하면 '휴대용 서비스 추상화'라고 해석할 수 있지만, 무엇을 의미하는지 한눈에 알기는 어렵다. 추상화라고 하면 '공통된 부분을 추출해내는 것이다'라고 설명할 수 있다. 그러면 여기서 말하는 서비스 추상화는 무엇을 의미할까? 서비스 추상화는 서비스의 내용을 모르더라도 해당 서비스를 이용할 수 있다는 것을 의미한다. PSA 예 Spring Web MVC를 예로 들어보면, 우리는 클래스를 만들고 해당 클래스에 @Controller 어노테이션을 작성하여 컨트롤러 역할을 하는 클래스를 만든다. 그래서 @GetMapping이나 @PostMapping으로 요청을 매핑하여 사용한다. 그런데 원래 Servlet을 사용하기 위해서는 HttpServle..

    [Java] 추상 클래스 VS 인터페이스

    추상 클래스 (Abstract Class) 추상 클래스는 일반 클래스와 비교해서 크게 다른 점은 없다. 단지 추상 클래스에 추상 메서드를 작성하여 상속받는 자식 클래스에서 메서드를 완성하도록 유도하는 클래스이다. 그래서 추상 클래스를 '미완성 클래스'라고 한다. 추상 클래스를 선언하는 방법은 class 앞에 abstract라는 키워드를 붙여주면 된다. Ex) public abstract class abstractClassEx 인터페이스 (Interface) 인터페이스는 일반 클래스와 비슷한 구조를 보여준다. 추상 클래스는 '미완성 설계도'라고 한다면 인터페이스는 '기본 설계도'라고 할 수 있다. 인터페이스를 선언하는 방법은 class 대신 interface를 작성해주면 된다. Ex) public inte..

    [Spring] Spring Triangle? 그게 뭔데 - IoC/DI

    이전 포스팅에서 AOP에 대해 알아보았다면 이번 시간에는 IoC/DI에 대해 알아보자. [Spring] AOP란? AOP(Aspect Oriented Programming) AOP(Aspect Oriented Programming)는 '관점 지향 프로그래밍'이라고 한다. 여기서 말하는 관점 지향이란? → 어떤 로직을 기준으로 핵심적인 관점과 부가적인 관점으로 나눠서.. gwamssoju.tistory.com IoC(Inversion of Control)란? IoC란 '제어의 역전'이라고 한다. '제어의 역전'이라는 말은 상당히 어렵게 느껴지는 말이지만 이렇게 설명할 수 있다. 개발자가 제어하는 것이 아닌 스프링 컨테이너에게 제어권이 넘어간다. 그렇다면 여기서 말하는 스프링 컨테이너는 뭘까? 스프링에서는 ..

    [Spring] Spring Triangle? 그게 뭔데 - AOP

    Spring에는 Spring Triangle이라고 하는 AOP, IoC/DI, PSA가 있다. 이번 시간에는 AOP에 대해 알아보자. AOP(Aspect Oriented Programming) AOP(Aspect Oriented Programming)는 '관점 지향 프로그래밍'이라고 한다. 여기서 말하는 관점 지향이란? → 어떤 로직을 기준으로 핵심적인 관점과 부가적인 관점으로 나눠서 그 관점을 기준으로 모듈화 하겠다는 것이다. 그러면 모듈화란? → 공통된 로직이나 기능을 하나로 묶는 것이다. 핵심적인 관점과 부가적인 관점은 어떤 것을 의미하는가? → 핵심적인 관점은 우리가 적용하고자 하는 핵심적인 비즈니스 로직을 뜻한다. 반면에 부가적인 관점은 핵심적인 관점이 행해지기 위한 것으로 볼 수 있다. 위 그..