본문 바로가기

Spring&IntelliJ

(44)
CQS(Command Query Separation)에 대해서 참고: https://velog.io/@yena1025/CQS-Command-Query-Separation 강의도중 아래와 같은 save메서드에서 왜 반환값을 그냥 회원객체로 반환하는것이 좋지 않은지에 대한 설명이 있었다. 결론만 말하면 save의 기능은 저장의 기능이기 때문에 굳이 회원객체를 반환하여 그 객체를 수정할 수 있는 여지가 아예 없도록 CQS패턴을 적용하여 save메서드를 구현하는 게 좋다는 것이다. 아래는 CQS에 대한 소개이다. CQS는 'Command Query Separation', 즉 Command와 Query를 분리하자는 개념을 말한다. Command는 상태를 변경하는 메서드이며, Query는 상태를 반환하는 메서드를 지칭한다. CQS는 패턴이다 CQS는 디자인 패턴 중에 하나이다..
@PersistenceContext와 EntityManager, 그리고 영속성(Persistence) https://flexyduck.tistory.com/178 https://colevelup.tistory.com/21 이전에 위 링크에서 JPA에 대해서 배웠던 것중 "JPA는 영속성 컨텍스트를 가진다." 라는 특징이 있었다. 정말 이 JPA특징을 생각하면 @PersistenceContext 라는 어노테이션은 오직 JPA의 EntityManageer 클래스만을 위한 어노테이션 같다는 느낌을 받는데 정말 그럴까? JPA와 ORM에 대한 간략한 정의와 JPA에서 중요한 영속성 컨텍스트(Persistence Context)와 엔티티 매니저(Entity Manager), 영속성 컨텍스트 타입(Persistence Context type), 영속성 컨텍스트(Persistence Context)의 장점등에 대해서..
DB 컨넥션 풀과 Hikari Connection pool 에 대해서 출처: https://velog.io/@miot2j/Spring-DB%EC%BB%A4%EB%84%A5%EC%85%98%ED%92%80%EA%B3%BC-Hikari-CP-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0 https://velog.io/@dongvelop/Spring-Boot-Hikari-CP-%EC%BB%A4%EC%8A%A4%ED%85%80%EC%9C%BC%EB%A1%9C-%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%ED%95%98%EA%B8%B0 실무환경에서 DataBase 성능 최적화 및 ORM에 대해 이야기 할때 커넥션풀이라는 단어가 자주 등장하여 한번 정리가 필요할 것 같아 정리한 포스트 입니다. 🍌 JDBC란? Hikari C..
Spring과 MySQL 연동에서의 application.properties설정 출처: https://velog.io/@ddusi/Spring-1 2020-03-18 spring에 MySQL 연동하기 Spring boots를 하면서 기존에 수업때는 H2라는 데이터베이스를 사용하였다. 하지만, 이번에는 MySQL을 연동하기 위해서 MySQL driver를 설치하여 사용하려고 했는데, 자동적으로 연결이 안되서 매우 고생했다.. ㅠㅠ 프로젝트 시작시 MySQL driver 라이브러리 포함하여 시작. dependencies { implementation 'org.springframework.boot:spring-boot-starter' runtimeOnly 'mysql:mysql-connector-java' testImplementation 'org.springframework.boot:s..
Logback로깅 프레임워크 출처: https://goddaehee.tistory.com/206 이 글 읽기전 알아야 할 사전지식: https://flexyduck.tistory.com/245 [스프링부트 (5)] Spring Boot Log 설정(1) - Logback 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ 스프링 부트 Log 설정 - 로그백] 입니다. : -) 1. Logback 이란? 특징? - 자바 오픈소스 로깅 프레임워크, SLF4J의 구현체 - 스프링 부트의 기본으로 설정되어 있어서 사용시 별도로 라이브러리를 추가하지 않아도 된다. - log4j, log4j2 등과 성능을 비교했을 때에도 logback이 더 훌륭한 성능을 보여준다. - spring-boot-starter-web 안에 spring-boot-start..
배포환경과 Spring Boot Profile적용 참고: https://deveely-log.netlify.app/2020-03-21-spring-boot-profiles/ 글에 들어가기에 앞서 용어정리부터 해보기로한다. 나는 profile이란 말이 생소하여 검색하였더니 다의어로 확인되었고 여러 포스팅을 읽고 profile이 "윤곽", "개요"라는 의미로 쓰인다는 것을 파악하였다. 본격적으로 들어가기전 Framework에 대한 특성 하나를 remind하고자 한다. 알고 있듯이 프래임워크를 사용한다는 것은 기존에 이미 만들어져 있는 틀안에 내가 코드를 입력하는 형식으로 주도권은 Framework가 갖는다. 리마인드 하고싶은것은 그게 타이핑 몇글자에 불과한 대상도 철저히 그 틀이 형성되어 있다는 사실이다! 아래는 resources 폴더 안의 applicat..
JPA properties설정관련
방언(dialect)(hibernate.dialect) 이란? 방언이란? 번역처리 기능. 특정 프로그램(데이터베이스)에서만 쓰이는 기능이나 문법을 처리해 주는자(JPA)입장에서 바라본 번역처리 기능. dialect는 처리자의 옵션이다. 🧐 Dialect란? JPA의 주요 특징인 "데이터베이스에 종속적이지 않다"를 쓰기위해 hibernate.dialect 를 쓴다. hibernate의 dialect로 데이터베이스 방언(언어, 사투리)을 설정할 수 있다. 서로 다른 데이터베이스 문법, 타입 등을 알아서 처리해주므로 개발자는 데이터베이스를 바꾸더라도 코드를 크게 바꾸지 않게 된다. 가변 문자 비교 MySQL : VARCHAR Oracle : VARCHAR2 문자열 자르는 함수 SQL 표준 : SUBSTRING() Oracle : SUBSTR() 이렇게 SQL 표준과 다르..