AOP in Spring
2022. 5. 19. 18:37
개발 저장소/Spring
AOP가 필요한 상황 모든 메소드의 호출 시간을 측정하고 싶을 때 공통 관심사항 vs 핵심 관심사항 회원 가입 시간, 회원 조회 시간을 측정하고 싶을때 문제 1. 회원가입에서 시간을 측정하는 기능은 핵심 관심 사항이 아니다. 시간을 측정하는 로직은 공통 관심 사항이다. 시간측정 핵심로직의 코드가 겹쳐서 유지보수가 힘들다. 시간을 측정하는 로직을 공통 로직으로 만들기 어렵다. 해결 1. By AOP 핵심 개념 : 공통 관심사항 (Cross-cutting concern) vs 핵심 관심사항(Core concern) 분리 시간 측정 로직을 한 곳으로 모으고 -> 필요할 때 가져다 쓰도록 AOP는 특수한 목적이기 때문에 @Component로 빈등록해주는것보단 Config에 직접 빈등록을 명시해 주는것이 좋음 메..
JDBC - JPA - Spring Data JPA 간단 비교
2022. 5. 19. 18:34
개발 저장소/Spring
JDBC Connection, Close 및 SQL을 직접 삽입해주어야함 Connection을 안끊으면 Connection이 계속 쌓여서 장애가 남 JPA JPA = ORM 객체와 릴레이션을 연결해줌 @Id @GeneratedValue(Identity) 등의 어노테이션 활용 JPA를 사용할 때 JPQL을 사용하여 Select * from m; 과 같은 쿼리를 수행하려면 Select m from Member m; 과 같이 객체 alias 자체를 넘겨주면 된다. Hibernate 가 실질적인 쿼리를 만들어줌 SpringDataJPA JpaRepository 를 상속받으면 자동으로 스프링 빈으로 등록해준다. (JPA 를 더 쉽게 쓰기 위한 라이브러리) 복잡한 동적 쿼리는 Querydsl이라는 라이브러리로 쿼리..
Spring 프로젝트 배포 중 Application.yml 에 관하여
2022. 5. 18. 16:14
개발 저장소/Spring
Application.yml 은 깃허브나 외부로 절대 유출되어서는 안되는 파일이다. 따라서 배포를 위해서는 .gitignore를 통해 깃허브에 커밋되지 않도록 하는 것이 기본이다. application.yml .gitignore 적용법 1. 위 사진은 프로젝트 패키지 내의 위치한 .gitignore 파일의 항목이다. 다음과 같이 .yml, application.properties 등 깃허브에 커밋하고싶지 않은 파일명을 적어준다. 2. .gitignore를 위와 같이 수정하고 커밋 및 푸쉬를 해도 적용이 되지 않는 경우가 많다 이럴 때 해결방법은 3. .git 이 존재하는 경로의 터미널에서 아래와 같은 명령어를 순서대로 입력한다. rm -rf -r cached . git add . git commit gi..
Spring - Update 영속성 컨텍스트 (+Spring Data JPA)
2022. 5. 16. 20:38
개발 저장소/Spring
Spring Data JPA를 사용하여 유저의 관한 CRUD 연산을 수행해보았다. UserRepository.java import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Tr..
Gradle vs Maven [Java 빌드 과정]
2022. 5. 5. 18:59
개발 저장소/Spring