본문 바로가기

IT 공부104

[스프링] - 스프링이 Java Bean이 유효성을 검증하는 방법 ※ 이 포스팅은 스프링 프레임워크가 어떻게 @Valid 같은 어노테이션을 체크하고 실행하는지 그 원리를 공부한 것을 정리한 포스팅입니다. 저에게 어려운 주제라 오류가 있을 수 있습니다. 1. 유효성 검증은 JavaEE 스펙. 스프링 프레임워크는 자동으로 @Valid와 같은 어노테이션을 식별하고, 관련 데이터의 각종 유효성들을 검증해준다. 그리고 그 결과를 BindingResult 객체에 정보를 저장하고 컨트롤러에게 넘겨준다. 이렇게 이야기를 듣고 기술을 쓰면은 마치 유효성 검증이 스프링의 특수한 기능처럼 들린다. 그러나 파고 들더가면 오히려 스프링이 유효성 검증 스펙을 사용하는 입장일 뿐이라는 것이 드러난다. 즉, 유효성 검사와 관련된 API와 기능들은 스프링에 종속된 개념들이 아니다. 우선, 유효성 검.. 2024. 1. 8.
[스프링] 한글 깨짐 문제의 원리와 해결 쿼리 스트링이나 POST의 body 파라미터로 한글 데이터를 전달하면 자바 애플리케이션 내부에서 한글이 깨져버린다. [자바] - 한글이 깨지는 문제의 원리 1. 문자열과 인코딩 문자열을 다루기 위해서는 인코딩(encoding)에 예민해야 한다. 컴퓨터는 0과 1로 이루어진 비트를 기반으로 정보를 처리한다. 따라서 컴퓨터로 유용한 일을 하기 위해서는 0과 1 linocraft.tistory.com 한글이 깨지는 원리는 위 링크에 포스팅했다. 다만 이것은 인코딩과 관련된 일반적인 문제의 원리를 다루므로 구체적으로 스프링에서 한글이 깨지는 근거는 아래의 링크에서 찾을 수 있다. [서블릿] - ServletRequest의 Character Encoding을 utf-8로 설정해야 하는 이유 1. 서블릿 Reque.. 2024. 1. 8.
[자바] - JDBC 드라이버 표준 타입 매핑 1. java의 데이터 타입과 DB의 데이터 타입 변환 문제 개발을 하면서 데이터를 영구 처리하고 싶을 때는 데이터베이스를 활용한다. 이때 데이터베이스는 종류가 굉장히 많은데, 관계형 데이터베이스만 해도 MySQL, Oracle, Postgre 등이 있다. 데이터베이스를 클라이언트 프로그램으로 서버와 직접 통신해서 사용할 수도 있다. 그러나 자바 애플리케이션 개발을 할 때는 자바 애플리케이션이 데이터베이스 서버와 연결을 시도하고 쿼리를 날려야 한다. 이 사이를 매개하는 기술이 JDBC이며, JDBC는 JavaSE 표준이다. 물론 MyBatis, JPA 같은 기술이 많다. 하지만 그 모든 기술도 내부적으로는 JDBC를 사용한다. 그런데 각 데이터베이스는 각자의 데이터 타입을 구현해 사용한다. 대부분 큰 그.. 2024. 1. 8.
[마이바티스] - 마이바티스 스프링 빌드 방법 마이바티스는 단독으로도 라이브러리를 사용할 수 있지만(링크를 클릭하면 방법이 나온다), 친절하게도 스프링 프로젝트에서는 마이바티스를 함께 사용하는 라이브러리를 제공해준다. 이를 이용하면 아주 쉽게 스프링 프로젝트에서 마이바티스를 이용할 수 있다. 실제로 스프링 프로젝트 시 마이바티스를 단독으로 사용하진 않는다고 들었다. 내가 따로 마이바티스 단독 설정을 정리하고 포스팅한 이유는 스프링에서 마이바티스 설정 시, 단독 과정과 비교하면 설정을 이해하기가 수월하기 때문이었다. 그 내용을 간략하게 요약하면, 1) SessionFactory에게 파일로 데이터베이스 드라이버와 Datasource, 그리고 매퍼 xml을 알려준다. 2) SqlSessionFactory가 xml 정보를 토대로 session을 생성하고, .. 2024. 1. 7.