반응형 분류 전체보기181 @Converter 사용해서 DB값 변환하기 엔티티의 속성 중에 boolean 타입을 사용하는 속성은 DB에 저장 시에는 DBMS마다 상이한 경우도 있지만 0 혹은 1로 저장되는 경우가 많다. 이는 의미를 불명확하게 하여 보는 사람이 손쉽게 파악하기 어렵다는 단점이 있다. 그리하여 DB에 저장할때는 Y / N으로 변환하여 저장해 주면 파악하기 좋아진다는 장점이 있다. 이 경우 뿐만아니라 DB에서 불러올 때 저장할 때 암호화/복호화하는 경우에도 사용 가능하기도 하다. 저장할 때 직접 변환해서 저장하고, 조회할 때 변환해서 가져오는 로직을 추가하여 사용할 수 있지만 그보다는 엔티티의 속성 자체에 Converter를 넣어주어 자동으로 변환되도록 하면 유지보수는 물론 보기에도 좋은 코드가 된다. 간단하게 말하면 객체의 속성과 DB의 컬럼 데이터를 매핑할 .. 2023. 9. 6. Querydsl 간단하게 알아보기 업무에서 Querydsl을 사용하게 될 것 같아서 간단하게 알아보는 시간을 가져 보았다. Querydsl를 짧게 표현하자면 SQL, JPQL등 쿼리를 코드로 작성하게 해주는 빌더 오픈소스 프레임워크이다. 소개 배경 Querydsl을 사용하기 이전에는 query를 문자열로 작성해야 했다. JPQL을 생각해 보면 아래와 같이 작성하고 있었다. @query("select a from Test a") Optional findAll(); 이와 같이 작성하면 쿼리를 문자열로 작성하다보니 실수할 수 있고 또 문제가 컴파일 때 발생하지 않고 실행 시에만 문제를 찾을 수 있다는 단점이 있었다. 이를 해결하고자 Querydsl은 자바코드로 쿼리를 작성할 수 있게 해주어 개발자의 실수를 줄일고 컴파일 타임에 오류를 찾을 수.. 2023. 8. 5. AOP에 대해 알아보자 스프링의 중요 개념 중 하나인 AOP (Aspect-Oriented Programming)에 대해서 알아보는 시간을 가져보려고 한다. AOP란? AOP란 개발을 하면서 중복코드를 제거하고 모듈성을 향상하기 위해서 사용되는 프로그래밍 패러다임이다. spirng은 이러한 AOP를 지원하고 있다. AOP의 핵심은 “횡단 관심사”를 분리하는 것이다. 즉, 애플리케이션의 주요 로직과는 별도로 존재하는 공통된 기능들을 한 곳에 모아서 관리하는 것 이러한 공통 기능을 “Aspect”라고 하며, 이를 원하는 부분에 주입하여 적용한다! AOP 장점 모듈성 향상 : 핵심 비즈니스 로직과 공통 기능들을 분리하여 코드의 가독성과 유지보수성을 개선한다. 중복 코드 제거 : 공통 기능이 여러 곳에서 필요한 경우, AOP를 사용하.. 2023. 8. 4. Java 로깅 알아보기 2 - logback 2023.08.04 - [자바(Java)] - Java 로깅 알아보기 1 - Logging이란 기본적인 내용은 이전 글을 통해 확인하는 것을 추천! Log4j 구조 Logger : 로그의 주체, 로그의 메시지 전달, 특정 패키지 안의 특정 레벨 이상만 출력 Appender: 어디에 출력할지에 대해 기술 Encoder: 어떻게 출력할지에 대해 기술 Logback 환경 설정 (logback.xml) resources 하단에 logback.xml 파일 생성 %d{yyyy-MM-dd HH:mm:ss} %highlight([%-5p]) --- [%F]%M\\(%L\\) : %m%n 속성 설정 appender 부분은 출력위치를 결정해 주고 (STDOUT), Appender로 사용할 클래스를 설정해 주는 부분이다. .. 2023. 8. 4. Java 로깅 알아보기 1 - Logging이란 로깅 (Logging)시스템의 작동 정보인 로그(Log)를 기록하는 것시스템이 작동할 때 작동 상태의 기록과 보존, 이용자의 습성 조사 및 시스템 동작의 분석 등을 하기 위해 작동 중 각종 정보를 기록하는 것일반적인 출력인 System.out.println()은 동기이기 때문에 로그를 출력하는 동안 다음 동작을 할 수 없기 때문에 성능저하가 발생한다.Slf4j (Simple Log Facade For Java)로깅 프레임워크가 아님.다양한 로깅 프레임워크가 접근할 수 있도록 하는 추상화 계층(인터페이스)단독적으로 사용할 수 없다.브리지를 통해 자바의 다양한 로깅 프레임워크를 간편하게 사용할 수 있다.로그 종류Fatal : 아주 심각한 에러Error : 요청을 처리하던 중 문제가 발생한 상태Warn : 처.. 2023. 8. 4. [JSP] jsp 태그 알아보기 JSP 세팅spring 3.0부터는 의존성 변경해야함implementation 'jakarta.servlet:jakarta.servlet-api' implementation 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api' implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl'JSP 태그 문법 (xml 문법)주석 ()선언 ( ... )지시 () () (xmlns:prefix="tag library URL")표현 ( ... )스크립트 ( ... ) 2023. 8. 4. 코드리뷰 약어 살펴보기 사이드 프로젝트를 진행하고 있는 팀원들과 코드리뷰 아닌 코드리뷰를 진행하고 있는데 그동안은 정해진 규칙 없이 아무렇게나 작성하곤 했다. 그러다 보니 중요한 코멘트와 중요하지 않고 단순 의견임을 나태내기 어렵다는 생각이 들기 시작했다. 때로는 잘 작성한 것 같아 그냥 “수고하셨습니다.”만 날리곤 했다. 따라서 코드리뷰에서 주로 사용한느 약어들을 정리하여 실제로 사용보면 어떨까 하여 알아보았다. CL (ChangeList) 코드 변경 단위, 변경된 코드 리스트 NIT (NITpicking) 중요하지는 않지만 더 나은 방법이 있다는 의견 (TMI와 비슷한 느낌이다.) LGTM (Look Good To Me) 내가 보기엔 좋아보여라는 뜻으로 문제가 없어 보일 때 사용한다 비슷한 말로 (SGTM (Sounds G.. 2023. 8. 4. 2022년 11월 부터 2023년 7월까지의 일일커밋 회고 먼저 일일커밋에 대해서 알게 된 경로는 백엔드 교육을 받으면서 우연히 강사님께서 소개해주신 이동욱 님의 블로그(https://jojoldu.tistory.com/ )를 소개시켜 주셨고 블로그를 보던 중 일일 커밋에 대한 글을 보고 알게 되었다. 일일커밋을 보고 마치 게임을 하듯이 경험치를 쌓는 느낌으로 할 수 있다는 느낌은 게임을 좋아했던 나를 일일커밋에 뛰어들게 만들었다. 처음에는 익숙하지 않았지만 매일매일 쌓여가는 잔디를 보며 내가 성장하고 있다는 느낌에 뿌듯함을 느꼈다. 점점 일일커밋이 습관이 되고 어느 순간부터는 하루라도 빼먹으면 불안감에 휩싸이는 집착이 되었다... 어떠한 커밋을 했는가인 내용은 둘째가 되었고 커밋을 한다는 그 행위에 집착하게 된것 같다. 즉, '깊이'를 늘릴생각을 하지 않게 된.. 2023. 7. 31. Bean, VO, DTO, Entity 구분하기 개발을 하면서 데이터를 다루기 위해서 여러 종류의 클래스들을 사용하게 되는데 대표적으로 Bean, VO, DTO, Entity 등이 있다. 이것들을 구분하여 언제 사용해야 하는지 알아보는 시간을 가져보았다. Bean Bean은 Java Bean과 Spring Bean으로 나눠지는데 조금 다른 의미가 있어 구분할 필요가 있다고 생각한다. Java Bean 자바로 작성된 소프트웨어 컴포넌트 클래스로 동작하기 위해 따라야할 몇 가지 관례가 있다 클래스는 직렬화되어야 한다.(클래스의 상태를 지속적으로 저장 혹은 복원시키기 위해) 클래스는 기본 생성자를 가지고 있어야 한다. 클래스의 속성들은 get, set 혹은 표준 명명법을 따르는 메서드들을 사용해 접근할 수 있어야 한다. 클래스는 필요한 이벤트 처리 메서드들.. 2023. 7. 26. 이전 1 2 3 4 5 6 7 ··· 21 다음 반응형