분류 전체보기 474

[Java - TIL] ❓객체 상속 시 this 가 가르키는 객체는 무엇일까 (내적 일관성)

아래 코드의 정답은..!?!?!? @Test void test(){ A a = new B(); a.run(); } class A { protected void print(){ System.out.println("A run"); } public void run(){ this.print(); } } class B extends A { protected void print(){ System.out.println("B run"); } } 📗 객체지향적인 언어를 만들 때 약속했다고 합니다. 모든 this 는 생성된 객체를 가르키기로 약속했기 때문에. 상속받은 B 객체의 부모객체의 A 의 메소드에서 this를 호출해도, 생성된 객체인 B 객체를 가르키는 것입니다! ➡️ 이게 내적일관성에 대한 약속 비야네 스트로스트..

Java 2022.10.06

[Spring DB 1편] (2) 커넥션풀과 데이터소스 이해

인프런 김영한 - 스프링 DB 1 강의를 듣고 정리한 글 입니다. 목차 Connection Pool 이란 DataSource 란 DataSourc 예제 1. 커넥션 풀 이해 이전 게시물의 방법대로 JDBC 를 사용한다면 데이터베이스에 접근할 때 마다 매번 커넥션을 획득해야하고 아래와 같은 불필요한 커넥션 과정을 거쳐야합니다. 커넥션 획득 과정 어플리케이션 로직은 DB 드라이버를 통해 커넥션을 조회한다. DB 드라이버는 DB 와 TCP/IP 커넥션을 연결한다. 물론 이 과정에서 3 way handshake 같은 TCP/IP 연결을 위한 네트워크 동작이 발생한다. DB 드라이버는 TCP/IP 커넥션이 연결되면 ID, PW 와 기타 부가정보를 DB 에 전달한다. DB는 ID, PW 를 통해 내부 인증을 완료하..

[JUnit] JAVA 매개변수 Test - @ParameterizedTest

🚀 오늘은 다양한 매개변수 케이스를 하나의 테스트 메소드에서 주입시켜주는 @ParameterizedTest 어노테이션의 다양한 케이스들의 가이드를 기록해보고자 합니다...!! [목차] @Parameterized란 @Parameterized 가이드 @Parameterized 공급자 종류 @Parameterized란 @ParameterizedTest 어노테이션은 Junit 에서 다양한 매개변수들에 대한 경우를 테스트할 수 있도록 제공해주는 어노테이션입니다. @ParameterizedTest 주석이 달린 메소드는 매개변수화된 테스트 메소드임을 의미하고 Private, Static 이 아니어야 합니다. @Parameterized 시작 가이드 의존성 추가 먼저 JUnit Jupiter Params 의존성을 추가해..

[Spring Data Jpa] delete(Entity e) vs deleteById 차이

그저 궁금해서 알아보는 jpa delete 와 deletById 의 차이점 결론부터 말하면 똑같다. deleteById 는 findbyId + delete(entity e) 의 과정이 합쳐진 메소드라고 볼 수있습니다. 👏🏻 두 메소드의 차이점은 deleteById를 사용하면 내부적인 findById 조회 시 값이 없을 경우 EmptyResultDataAccessException 이 발생한다는 점 입니다. 따라서 엔티티조회시, 커스텀한 익셉션을 떨어트려 메세지를 담고싶다면 delete 를 사용하는게 마음이 더 편하다..? public Notice getNotice(final Integer idx) { return noticeRepository.findById(idx).orElseThrow( () -> ne..

Spring/Spring Boot 2022.09.26

[JAVA] 지역변수 vs 전역변수 (feat. java8 JVM Static Object Heap Area)

자바 지역변수 vs 전역변수 .. 이 글을 읽고있는 당신의 선택은!?!? 📗 고민의 시작은 이러했습니다. 단 하나의 메소드에서만 사용되는 지역변수를 전역변수로 뺀다면 메모리 낭비가 이루어지지않을까 ?? ➡️ 전역변수로 지정해줄때의 장점은 뭐지? 어떤상황에서 전역변수가 더 유용하게 사용되는거지?? 📝 요약 더보기 java 8 이후 static object 는 jvm 힙 메모리 영역에서 관리된다. 고로 garbage collector 의 영향을 받느다. 지역변수 vs 전역변수의 선택은 사용성에 집중하자. 메모리를 아끼기위해 지역변수로 선언했지만, 해당 메소드에 많은 생성과 파괴가 일어나면 io 자원을 많이 잡아먹게된다. 이런 상황에서 전역변수는 유용하다. 잘생각해보자! 자바 8 이후 static object..

Java/Java 문법 2022.09.26

[모던자바인액션] chapter7. 자바 병렬 처리 와 성능측정 - parallelStream

" Modern Java In Action - 모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드 " 독서 스터디 후, 책 내용을 정리한 글입니다. 1) Chapter 1. 자바 8, 9, 10, 11 : 무슨일이 일어나고 있는가? 2) Chapter 2. 동작 파라미터화 코드 전달하기 3) Chapter 3. 람다 표현식 4) Chapter 4. Stream 5) Chapter 5. Stream 활용 6) Chapter 6. Stream으로 데이터 수집하기 7) Chapter 7. Stream 병렬 데이터처리와 성능 Chapter7 에서는, 자바 병렬 스트림의 사용과 성능에 대해서 이야기합니다. 자바 7이 등장하기 전에는 자바에서 병렬처리를 할려면 많은 노력을 해야했습니다. 데이터를 ..

[모던자바인액션] chapter6. Stream Collect 메소드 최종연산에 대하여 - collector, collectors

" Modern Java In Action - 모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드 " 독서 스터디 후, 책 내용을 정리한 글입니다. 1) Chapter 1. 자바 8, 9, 10, 11 : 무슨일이 일어나고 있는가? 2) Chapter 2. 동작 파라미터화 코드 전달하기 3) Chapter 3. 람다 표현식 4) Chapter 4. Stream 5) Chapter 5. Stream 활용 6) Chapter 6. Stream으로 데이터 수집하기 7) Chapter 7. Stream 병렬 데이터처리와 성능 Chapter6 에서는, 스트림 최종연산인 collect 사용방법에 대해서 이야기합니다. [목차] 컬렉터란 컬렉터 인터페이스 (Stream Collector Interfa..

추상클래스의 객체 생성 (추상클래스 인스턴스) - 추상클래스를 사용하는 이유

👏🏻 요약 더보기 객체생성을 하지 않아도 된다는 의도를 명확히 하기위해서 + 의도치않은 메모리 낭비를 막기위해 김영한님 강의를 보는 도중 상수 정보만을 가진 클래스를 만들었는데, 이 클래스가 상수 정보만을 담고있기때문에 객체생성을 막기위해 abstract class 로 선언을 하는 것을 보고 조금 의아해서 글을 남겨보고자 합니다. 김영한님 왈) 상수를 모아서 쓴거기 때문에 객체를 생성하면 안되겠죠? 그래서 abstract 로 객체 생성을 막아놓았습니다. //상수 데이터만 담은 class - 객체 생성하지 않기위해 추상클래스로 public abstract class ConnectionConst { public static final String URL = "jdbc:h2:tcp://localhost/~/t..

Java/Java 문법 2022.09.19

[Java] 스트림에서 오토박싱 (박싱, 언방식)이 일어나는 이유

스트림 병렬처리를 진행할 때, paraller Stream 이 순차적인 iterate(반복자) 보다 성능이 느리게 나오는 경우가 있습니다. ❓ 스트림 병렬처리의 성능이 낮게나오는 이유 중 하나로, 기본형(원시 타입) 특화되지 않은 스트림을 초러할 때 수반되는 오토박싱, 언방식 등의 오버헤드를 수반하기 때문이다. 라는 이유가 언급되었고, 그렇다면 스트림에서 왜 오토박싱이 일어나는지 잊어먹지 않기위해 정리합니다. 📗 요약 : 제네릭 때문에 자바 Stream 에서 내부적으로 오토박싱이(auto boxing) 일어나는 이유 📌 modern java in action 103 쪽을 보면 이유 1 👏🏻 함수형 인터페이스들에 제네릭 파라미터가 쓰여져있고, Java 에서 generice 은 참조형만 사용할 수 있다고 합..

Java/Java 문법 2022.09.16

JPA DTO PROJECTION - 클래스 기반, 인터페이스 기반

jpa 로 데이터를 불러올때, dto 혹은 엔티티말고 다른 무엇인가로 데이터를 담는방법 = 프로젝션 하고싶은 것 queryDsl 을 사용하지 않고 간단하게 jpa 만을 사용해서 dto를 담고싶었습니다. interface 기반의 dto 프로젝션이 가능하다는 것을 알고 있지만 재사용성을위해 dto class 그대로 사용하고싶었습니다. 문제 하지만 컬럼명이 맞지않아서 오류가 났고 이를 해결...해야함 인터페이스 기반이 아닌 클래스 기반 프로젝션을 할 때 에러가 남 no converter found capable of converting from type [org.springframework.data.jpa.repository.query.abstractjpaquery$tupleconverter$tupleback..

Spring/Spring Boot 2022.09.15