일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Oracle
- Vue
- map
- 알고리즘
- 프로그래머스
- DevOps
- cd
- hibernate
- java
- superBuilder
- k8s
- 자바
- IntelliJ
- CI
- Kubernetes
- CI/CD
- 코딩테스트연습
- Spring
- CKA
- Di
- SpringMVC
- builder-pattern
- JPA
- programmers
- 해시맵
- 뷰
- ORM
- docker
- vuejs
- dabase
- Today
- Total
목록개발/Java (23)
문홍의 공부장
Customized AOP 적용하기 Spring AOP 의 개념에 대해 이해하고, 대표적인 AOP 어노테이션인 @Transactional 의 동작 원리에 대하여 살펴 보았다. 개발을 하다 보면 cross-cutting concerns 이 빈번하게 생겨난다. 이런 것들을 하나의 모듈로 만들어 적용 할 수 있도록, AOP 를 통해 Custom Annotation 을 만들어 보자. 1. 어노테이션 정의 @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface LogExecutionTime { ... } 메서드의 실행 시간을 로깅하기 위해 위와 같이 @LogExecutionTime 어노테이션을 정의하였다. 런타임 시에 어노..
@Transactional의 동작 원리 @Service @RequiredArgsConstructor public class UserService { private final UserRepository userRepository; @Transactional public void save(User user){ userRepository.save(user); } } @Transactional 을 붙이면 일어나는 일 Spring Configuration 에 @EnableTransactionManagement 어노테이션 추가 (Spring boot 에서는 auto configuration 됨) Spring Configuration 에서 Transaction manager 지정 @Transactional 이 붙은 ..
Spring AOP 이해하기 예전에 면접에서 "@Transactional의 동작 원리에 대하여 설명해주세요." 라는 질문을 받은 적이 있다. 당시에 제대로 답변하지 못했고, 이를 계기로 Spring AOP 에 대하여 깊게 이해하려 하지 않았다는 점을 깨달았다. 정리해야지 생각만 하고 미뤄뒀었는데 이번 기회에 개념을 다잡아보고자 한다. AOP (Aspect Oriented Programming) ? AOP(Aspect Oriented Programming; 관점 지향 프로그래밍) 는, 횡단 관심사(cross-cutting concerns) 를 분리함으로써 모듈성을 높이는 것을 목표로 하는 프로그래밍 패러다임이다. 이는 코드 자체를 수정하지 않고, 기존에 존재하는 코드에 동작을 추가하여 수행하는 방식이다. ..
JPA 영속성 컨텍스트 영속성: 프로그램이 종료되어도 사라지지 않는 데이터의 특성. 영속성 컨텍스트: 엔티티를 영구 저장하는 환경. 개념 애플리케이션과 데이터베이스 사이에서, 객체를 보관하는 논리적 개념 (가상의 DB 역할) 영속성 컨텍스트는 직접 접근이 불가하며, 엔티티 매니저EntityManager 를 통해서 접근 가능하다. EntityManager를 통해 엔티티를 저장/조회 시, 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. (em.persist()) 트랜잭션을 커밋하는 시점에 영속성 컨텍스트의 내용이 테이블에 반영된다. (em.flush()) 엔티티의 생명주기 비영속(new/transient) 엔티티를 생성했지만 아직 영속성 컨텍스트에 저장하지 않은 상태 영속(managed) 엔티..
JPA 개념 정리 what is JPA(Java Persistence API) ? 자바 ORM 기술에 대한 API 표준 명세. (ORM을 사용하기 위한 인터페이스의 모음) JPA는 API의 규격일 뿐. (라이브러리나 프레임워크가 아님) Hibernate, OpenJPA 등이 JPA를 구현한 구현체(ORM 프레임워크)이다. what is ORM (Object-Relational Mapping) ? 객체가 DB 테이블이 되도록 매핑시켜주는 프레임워크. 객체 간의 관계를 바탕으로 SQL 을 자동으로 생성 프로그램의 복잡도를 줄이고, 자바 객체와 쿼리를 분리할 수 있으며, 트랜잭션 처리나 기타 데이터베이스 관련 작업들을 편리하게 처리할 수 있는 방법. SQL Mapper ORM 자바 클래스와 sql을 매핑 자바..
Division by Zero in Java: Exception, Infinity, or Not a Number 제수의 자료형이 Integer 일 때, divide by zero - ArithmeticException 을 발생시킨다. // throws ArithmeticException assertThrows(ArithmeticException.class, () -> { int result = 12 / 0; }); 제수의 자료형이 float/dobule 일 때, exception 을 발생시키지 않으며 infinity/NaN 으로 리턴한다. // exceptions 을 던지지 않으며, return NaN, POSITIVE_INFINITY, and NEGATIVE_INFINITY. assertDoesNotT..
Java Object 를 Map 으로 변경하기 (ObjectMapper) Jackson databind 라이브러리를 사용하여 객체를 Map 타입으로 변환할 수 있다. pom.xml 에 디펜던시 추가 com.fasterxml.jackson.core jackson-databind 2.11.0 클래스 생성 @Data public class Person { private int age; private String name; public Person() {} public Person(int age, String name) { this.age = age; this.name = name; } @Override public String toString() { return "Person {" + "age=" + age ..
Java Stream 활용하기 Java stream ? 배열/컬렉션을 함수형으로 처리 가능 간단한 병렬처리 가능(하나의 작업을 둘 이상으로 쪼개어 동시 진행) 자바 스트림을 사용하여 배열/인스턴스에 여러 함수를 조합하여 원하는 결과를 필터링하고, 가공된 결과를 얻을 수 있으며, 람다식을 사용하여 코드의 가독성을 높이고 간결하게 표현할 수 있다. 생성하기 배열 / 컬렉션 / 빈 스트림 Stream.builder() / Stream.generate() / Stream.iterate() 기본 타입형 / String / 파일 스트림 병렬 스트림 / 스트림 연결하기 가공하기 Filtering Mapping Sorting Iterating 결과 만들기 Calculating Reduction Collecting Ma..