java 4

[Java] Generics

1. 정의 - 타입을 일반화 하는 것을 의미 - 클래스 내부에서 정하는 것이 아닌 사용자 호출에 의해 타입이 지정되는 것 - class / interface / method 등의 타입을 파라미터로 사용할 수 있게 해주는 역할 - Java 5 부터 추가된 개념 ex) List list = new ArrayList(); // 는 diamond라고도 하고 제네릭 표현식임 2. 사용하는 이유 1) 재사용성 증가 : 여러 타입의 파라미터를 삽입해 객체를 생성할 수 있기 때문에 코드를 간결하게 하고, 재사용성을 높인다 2) 컴파일 시 타입 에러 발견 가능 : 컴파일시 잘못 사용되는 문제점을 발견할 수 있기 때문에 런타임 단계에서 발견 될 가능성을 방지한다 3) 컴파일러가 타입 변환 수행: 컴파일 단계에서 타입 캐스..

Language/Java 2022.10.26

[Spring boot + MongoDB + MySQL] DB 2개 연동하기

Springboot에 Mysql과 MongoDB 연결하기 1. 연결이유 프로젝트 중, RDBMS로 기본적인 것들은 다 구현해 놨는데, 서비스 배포시 사용자들의 로깅이나 결제 데이터가 쌓이면 Document기반인 관리하기 더 편한 NoSQL로 넣는게 좋을것 같다는 생각이 들었다 따라서 구조는 Springboot에 Mysql과 MongoDB둘다 연결되어 있는 구조이다 이번 글에서는 MongoDB에 AOP로 사용자 접근 로그를 저장하도록 하겠다 Collection이름은 user_history이다 2. 코드 1) build.gradle 수정 가장 아랫줄 코드가 mongodb를 추가한 부분이다 2) User History Entity 수정 //@Entity @Document(collection="user_hist..

Back-end/Spring 2022.07.26

Java Basic

Java Basic JVM(Java Virtual Machine) 동작 방식 (1) Class Loader JVM내로 클래스 파일을 로드하고, 링크를 통해 배치하는 작업 수행 (2) Execution Engine class loader를 통해 JVM 내의 Runtime Data Area에 배치된 바이트 코드드을 명령어 단위로 읽어서 실행함 (3) Garbage Collector heap 메모리 영역에 생성된 객체들 중 참조되지 않은 객체들을 탐색 후 제거하는 역할 (4) Runtime Data Area JVM의 메모리 영역으로 자바 애플리케이션을 실행할 때 사용되는 데이터들을 적자하는 영역 - Method Area: 모든 스레드가 공유하는 메모리 영역으로 class, interface, method, f..

Language/Java 2022.07.22

[JPA] jpa 1일차

JPA Day-1 진도 [생성 api ~ 조회 api] api 개발시 entity를 외부에 노출하거나, 파라미터로 받으면 안된다. entity를 그대로 사용하면 중간에 변동성 때문에 api 호출시 깨질 수 있다. DTO를 파라미터로 사용하여 받는다. 수정 api 개발시 command와 query를 분리하여 개발할 때 유지보수성이 증가한다. entity를 직접 반환하면 안된다 @JsonIgnore annotation을 사용하면 반환 시 없는 경우 나타나지 않는다. 다만 해당 어노테이션을 사용하는 것이 모든 케이스를 막기는 어렵다 DTO를 사용하여 반환해야한다. public Result membersV2() { List findMembers = memberService.findMembers(); //엔티티 ..

Back-end/Spring 2021.07.27