반응형 개념쌓기63 [개념쌓기] final/ finally/ finalize() final/ finally/ finalize 종종 사용하긴 했지만, 셋의 차이에 대해 명확히 몰랐기에 정리했다. 👀한 눈에 확인하기(para coreanos como yo) 1. final 변수 : final이 적용된 변수의 값은 초기화 후에는 변경할 수 없다 메소드 : final로 선언된 메서드는 하위 클래스에서 오버라이드 할 수 없다 클래스 : final로 선언된 클래스는 계승 대상이 될 수 없다.(하위 클래스를 만들 수 없다) 2. finally finally 키워드는 try/catch 블록과 함께 사용되며 예외가 던져지더라도 항상 실행될 코드가 지정하기 위해 사용된다 3. finalize java의 garbage collector는 객체를 삭제하기 전, finalize() 메소드를 호출 1. fi.. 2023. 1. 16. [개념쌓기] 직렬화(Serialization)? Spring을 사용하다보니 Serialization을 쓰는 일이 많아져서 Serialization이 무엇인지 궁금해서 기록을 위해 블로깅을 했다 🔔성격 급한 꼬레아노들을 위한 간단 정리 Java에서 직렬화란? - 자바 시스템 내에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트 형태로 변환하는 기술 - JVM의 메모리(힙/스택)에 있는 객체 데이터를 바이트 형태로 변환하는 것 그럼 역직렬화는? - 바이트로 변환된 데이터를 다시 객체로 변환하는 기술 - 직렬화된 바이트 형태의 데이터를 객체로 변환해 JVM에 상주시키는 것 SUID !!다음과 같은 경우 제대로된 객체를 불러올 수 없다 1. 저장하는 쪽과 불러오는 쪽의 컴파일러가 다를 경우 2. 저장하는 시기와 불러오는 시기의.. 2023. 1. 15. [개념쌓기] Object class? 자바의 최상위 클래스 자바의 최상위 클래스가 Object클래스인 것은 익히 알고 있을 것이다. 몰랐다면 이제 알면 된다. Object 클래스 : 모든 자바 클래스들의 부모 클래스이며 모든 자식 클래스는 Object의 메소드를 가진다. *System.out.println(new A()); 와 같이 모든 클래스 타입을 출력할 수 있는 것이 Object클래스가 있기 때문이다 class B extends A{~~ } class A{~~ } class A extends Object{~~ } 마지막의 경우 상속을 하지 않으면 자동으로 Object를 상속한다 즉, 모든 class는 object class의 메소드를 사용가능하며, 일부는 overriding 할 수 있다. Object 클래스는 필드없이 메소드로 구성된다 이 메소드들은 모든 .. 2023. 1. 12. [개념쌓기] JAVA 메모리 내 메소드 모든 프로그램은 프로그램의 실행에 있어 OS에게 시스템 리소스의 일부인 메모리를 할당 받아야 한다. 그렇기에 일반적으로 운영체제에 종속되어 실행된다. Java 프로그램은 JVM(Java Virtual Machine)이라는 프로그램을 사용해 운영체제에 종속되지 않고 중립적으로 실행될 수 있다. 예시 그림과 같이 일반 프로그램은 운영체제를 통해 Hardware에 접근하기 때문에 OS에 종속적인 것이다. 하지만 자바는 프로그램 후에 JVM을 통해 OS에 접근하기 때문에 운영체제에 종속되지 않는 것이다. Java의 중립적 클래스 설계를 올바르게 하여 만들어진 코드는 OS와 상관없이 재사용이 가능한데, 이를 가능하게 해주는 것이 JVM인 것이다. 위와 같이 장점도 있지만 일반 프로그램과는 다르게 중간에 JVM이 .. 2023. 1. 10. [개념쌓기] 가비지컬렉터? JVM에서 힙? https://veganwithbacon.tistory.com/158 [개념쌓기] 메모리? 스택,힙? 메모리가 무엇을 하는지 알아보고 JAVA 내에서의 메소드 영역의 역할 및 가비지컬렉터의 기능까지 같이 공부할 계획이다. 우선 메모리가 어떻게 이뤄져있는지를 알아보자. 🔔성격 급한 꼬레아 veganwithbacon.tistory.com 이제 메모리가 무엇인지 힙과 스택의 차이는 알았으니 Java 메모리에서 메소드 영역이 무엇을 하는지 알아보자 보자보자 어디보자 넌두고보자 가비지 컬렉터는 지금보자 🔔GarbageCollector 더 이상 필요없어진 메모리를 쓰레기(Garbage), 쓰레기를 효과적으로 처리하는 작업을 Garbage Collection(GC)라고 부른다 메모리 관리 방법 중에 하나로, 시스템 .. 2023. 1. 9. [개념쌓기] EntityGraph EntityGraph란? FetchJoin의 간편 버전이라고 생각하면 된다. 연관관계가 있는 엔티티를 조회할 경우 지연 로딩으로 설정되어 있다면 연관관계에서 종속된 엔티티의 쿼리를 실행 시에 select 되지 않고 proxy 객체를 만들어 엔티티가 적용시킨다. 그 후 해당 proxy 객체를 호출할 때마다 select 쿼리가 실행된다. 이처럼 연관관계가 LAZY로 되어있다면 Fetch 조인을 사용해 여러 번의 쿼리를 한 번에 해결할 수 있다. @EntityGraph는 Data JPA에서 Fetch Join을 어노테이션으로 사용할 수 있도록 만들어 준 기능이라고 생각하면 된다. 더 정리하려 했으나 글만 적는것보다는 Querydsl을 공부한 뒤에 코드에 적용시켜보고 경험을 바탕으로 작성하겠다. 이해가 잘 안돼.. 2023. 1. 4. [개념쌓기] Fetch Join N+1문제에 대해 공부하다보니 FetchJoin과 EntityGraph가 해결방안이라는 것을 알게 됐고 연장선상에서 두 가지에 대해 더 공부했다. 가지가 많아서 이것저것 다 공부하다보니 막상 해결책은 공부를 제일 마지막에 하게 되었다. 서론이 길었다. Fetch Join에 대해 알아보자. FetchJoin이란? FetchJoin은 JPQL에서 성능 최적화를 위해 사용하는 기능이다. FetchJoin은 SQL의 조인 종류가 아니다. (SQL 조인에는 Inner Join, Outer Join(left,right, full)이 있다.) JPA는 엔티티에 관계를 맵핑할 때 지연 로딩과 즉시 로딩을 설정할 수 있는데 이때 성능 최적화를 진행한다. 즉시 로딩 -> 어떠한 엔티티가 조회되었을 때 연관된 엔티티도 전부.. 2023. 1. 4. 이전 1 2 3 4 5 6 7 8 9 다음 반응형