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..
Exception Controll In Java
2022. 5. 15. 15:14
개발 저장소/Java Inventory
Step 02. 예외 처리 기본 - NullPointerException 그리고 StackTrace Situation1. 예외처리를 하지 않았을 때 public class ExceptionHandling { public static void main(String[] args) { method1(); System.out.println("Main Ended"); } private static void method1() { method2(); System.out.println("Method1 Ended"); } private static void method2() { String str = null; str.length(); System.out.println("Method2 Ended"); } } 결과 : 에..
OOP 특징들을 Java 코드로 (OOP in Java)
2022. 5. 9. 18:27
개발 저장소/Java Inventory
OOP(Object Oriented Programming) 절차적 프로그래밍은 데이터에 대한 작업을 수행하는 절차나 메서드를 작성하는 것이고 객체 지향 프로그래밍은 데이터와 메서드를 모두 포함하는 객체를 만드는 것이다. 객체지향 프로그래밍의 특징 빠르고 쉽게 실행 가능하다. 프로그램의 깔끔한 구조를 제공한다. 반복적인 코드를 막고, 수정과 디버그가 쉽다. 코드를 재사용 할 수 있게 된다. OOP 4대 원칙 캡슐화(Encapsulation) 추상화(Abstraction) 상속(Inheritance) 다형성(Polymorphism) 캡슐화(Encapsulation) 마치 알약이 내용물을 보호하듯이 코드를 보호해주는 역할을 수행한다. Java 에서 캡슐화를 만족시키려면 ? 클래스의 변수를 private로 선언..