본문 바로가기

반응형

프로그래밍/Java

(54)
Spring Data JPA 간략 사용법! JPA를 공부하고는 있지만, 아직 실무에서 쓰질 않다보니 JPA를 쓸때마다 항상 까먹고... 검색하고... 허비하는 시간이 많아져서 포스팅한다. 지금당장 구현원리까지는 몰라도, 사용하는데는 불편함이 없도록 하자! SpringDataJPA는 눈에 띄는 몇가지 기능을 제공하는데, 바로 구현체 없이 인터페이스 선언만으로 쿼리를 사용 할 수 있는 점이다. 인터페이스만 작성하면 실행시점에 SpringDataJPA가 구현 객체를 동적으로 생성해서 주입한다. 그럼 거두절미하고 바로 구현방법을 코드로 알아보자! @Repository public interface PostRepositroy extends JpaRepository { } 이게 끝이다. ㅎㅎ JpaRepository를 상속받은 인터페이스를 선언만 해주면 된..
Builder패턴이란? Builder 패턴이란 무엇일까? 현재 내 머릿속에 들어있는 Builder 패턴은 그냥 Lombok에서 제공해주는 어노테이션... 으로 객체를 생성할때 원하는 파라미터만 넣어서 만들수 있는 패턴? 방법? 으로 들어있다. 그러나 살짝만 검색해봐도 매우 잘못되게 알고있음을 알수있었다... 호돌맨의 요절복통 개발쇼를 보면서 매~일 SI회사에서 Setter로 뚝딱 처리하던 방법에서 벗어나 코드를 작성할수 있어야 할것 같다는 생각또한 강하게 든다.. 그럼 Builder패턴에 대해서 알아보자. 포스팅을 하면서 도달하고자 하는 목표 Builder패턴의 정의 내가 알고있는 Builder패턴에 대한 수정 장점 lombok말고 직접 짜보기 Builder패턴이란? GoF 디자인 패턴 중 생성 패턴에 해당한다. 빌더 패턴은 ..
Java GC 1차개정본 해당 포스트의 작성 목적 GarbageCollector GC의 전제조건 MinorGC MajorGC GC의 방법 5가지 해당 포스트의 작성 목적 예전 GC포스팅을 보면서 잠깐 훑었는데 G1 GC에 대한 내용이 너무없었다. 그리고 좀더 읽기 쉽게, 그리고 좀 더 이해가 갈수 있도록 내용을 수정하고자 한다. 이전 게시물 : https://hpotter1993.tistory.com/32 GC = >GarbageCollector https://asfirstalways.tistory.com/159 GC는 기본적으로 GC Root의대상에서 Reachable한 객체와 UnReachable한 객체를 나누고, UnReachable한 객체를 소거한다. 해당 객체에 접근할 수있는 수단이 있다면 Reachable이다. (주소..
Dynamic Proxy 직접 구현해보기-2 프록시, 다이나믹 프록시는 접근을 제어하기 위함인가? 기능을 확장하기 위함인가?? 사실 둘다 아닌가?? 아니, 애초에 기능을 확장하기 위해 프록시를 써도, 자동적으로 접근을 제어하게된다. 지난 포스팅에서 구현했던 프록시를, Dynamic Proxy로 구현해보자. JDK Dynamic Proxy는 자바의 리플렉션을 이용해 구현한다. 즉, 개발자가 직접 구현할 때도 자바의 리플렉션을 이용해야 한다는 소리이다. java.lang.reflect패키지 java.lang.relfect 패키지에 Proxy 클래스가 제공된다. Class Proxy Proxy provides static methods for creating dynamic proxy classes and instances, and it is also t..
Dynamic Proxy직접 구현해보기-1 프록시, 다이나믹 프록시는 접근을 제어하기 위함인가? 기능을 확장하기 위함인가?? 사실 둘다 아닌가?? 아니, 애초에 기능을 확장하기 위해 프록시를 써도, 자동적으로 접근을 제어하게된다. 먼저 내가 직접 프록시를 구현해보자. 아래의 코드는 User라는 클래스를 직접 생성, 정보를 출력하는 Client 코드와 User클래스이다. public class ProxyClient { public static void main(String[] args) { User user = new User(); user.useSomething(); } } public class User { public void useSomething() { System.out.println("use something"); } } ProxyCl..
Comparator의 동작방식 학습목표 어제 프로그래머스의 '가장 큰 수' 알고리즘을 풀고, 포스팅을 하면서 Compare와 Comparator 그리고 String의 대소비교에 대해서 명확히 알고자 포스팅을 했다. 그런데 마지막 실습코드 디버깅중에 이상한 현상이 발견되었다. Comparator의 compare(Objecjt o1, Object o2)의 설명에는 o1은 첫번째로 비교하는 파라미터, o2가 두번째로 비교하는 파라미터라고 되어있다. 나는 당연히 o1과 o2는 배열의 순서대로 들어올줄 알았다. 그러나 arr[n]과 arr[n+1]을 비교할때마다 o1 = arr[n+1]이 할당되고, o2 = arr[n]이 할당되는 것을 디버깅을 하면서 알게되었다. 도대체 왜그럴까?.... compare는 에초에 Comparator 인터페이스에..
Comparator VS Comparable 학습목표 정렬 알고리즘을 풀다가, String비교연산의 특징과 Comparable, Comparator의 사용법에 익숙치 않아 풀지못하고, 타 블로그를 참고해서 푼 문제가 있다. 분명 처음 접근을 Comparator를 써야겠다. 생각했었으나, 사용법과 String 비교연산에 대한 개념?이 없어 시동하다가 도중에 포기했다. 이번에 해당 내용을 학습하면서 명확히 기억해보도록 하자!! String 대소비교 Comparable Comparator 실습 코드 String 대소비교 compareTo(); 기준값.compareTo(비교값);의 형태로 사용되는 메소드다. 기준 값과 비교 값의 대소를 비교해 리턴해준다. String에 선언되어있는 compareTo의 코드를 살펴 보자. public int compareT..
정적 언어와 동적언어 그리고 덕 타이핑 학습목표 멘토링 시간에 정적타입 언어와 동적타입 언어에 대해서 답변하지 못했다... 분명 한번 봤던거 같은데.... 머릿속에서는 컴파일 언어와 인터프리터 언어일까?... 하고 생각이 들긴 했다. 깊게 파고들지는 않아도 된다고 하니, 개념정도만 훑어 봐야 겠다. 정적타입 언어와 동적타입 언어 쉽게 말해 정적타입 언어는 컴파일시 데이터타입을 정하는 언어이고, 동적타입 언어는 런타임시 데이터타입을 정하는 언어이다. 정적타입에는 흔히 C,C++,Java등이 있으며, 동적타입에는 'var'키워드를 사용하는 python,Javascript, Perl등이 있다. 정적타입 언어의 장점은, 데이터타입을 컴파일러가 검사하기 때문에, 사소한 버그들에 대해서 훨씬 잘 캐치할수 있다는 점(General의 장점이 여기서도!.....

반응형