분류 전체보기
-
spring jpa의 patch때 사용하는 유틸카테고리 없음 2023. 4. 19. 09:55
회사에서 잉여짓만하는구만ㅠㅠ 스프링 jpa를 쓰다보면 뭐 form으로 전달하는 것은 상관이 없는데 API 를만들다보면 업데이트시 null로 오면 null을 업데이트 한다. 그래서 옛날객체의 새로운 객체를 넣어 주어 update 하는 방식으로 해왔다. 예를 들어 이런 방식이다. if(account.getName() == null){ oldAccount.setName(account.getName()) } 필드가 많다보면 이것도 일이다. notnull은 상관없는데 null을 허용하는 것들이 문제다. 그래서 유틸로 만들었다. public static void oldInstanceBynewInstance(T oldInstance, T newInstance) { Class newInstanceClass = newI..
-
maven 멀티 모듈카테고리 없음 2023. 4. 19. 09:55
이번엔 메이븐 멀티 모듈을 알아보겠다. 아까 친구(?) 나는 친군데 자꾸 형이라 부른다. 멀티 모듈을 잘모른다 하길래.. 나도 한번 만들기만 해봐서 다시 한번 정리 해보겠다. 요즘 많이 쓰긴 하는데 큰 프로젝트가 아니라면 오히려 부담만 주는거 같다. 필자 생각 단일 프로젝트로 만들다 보면 중복 코드가 발생할 수 있는데 멀티 모듈로 이를 해결할 수 있다. 이거 너무 좋은 장점이다. 물론 잘 사용해야지 잘 못사용하면 오히려 독이 될 수도 있을 거 같다. 각성하고 필자는 인텔리j 기준으로 작성하겠다. groupid와 artifactid를 입력하고 next를 누르자 프로젝트명을 입력한후에 완료를 누르자 그런후에 프로젝트 오른쪽 클릭후에 모듈을 선택하자 그럼 다음과 같이 창이 뜨는데 첨에 했던 방식과 동일하다. ..
-
spring boot querydsl카테고리 없음 2023. 4. 19. 09:55
이번시간엔 querydsl에 대해 알아보자 한글 레퍼런스는 여기에 querydsl 은 JPQL와 Criteria를 대체 할 수 있으며 더 쉽다. 그게 장점이다. 일단 다음과 같이 메이븐에 추가하자 com.mysema.querydsl querydsl-apt ${querydsl.version} provided com.mysema.querydsl querydsl-jpa ${querydsl.version} ... com.mysema.maven apt-maven-plugin 1.1.3 process target/generated-sources/java com.mysema.query.apt.jpa.JPAAnnotationProcessor 간단하게 entity를 추가하자 @Data @Entity @NoArgsCons..
-
동등성과 동일성카테고리 없음 2023. 4. 19. 09:55
이번 시간에는 자바의 동등성(equals) 동일성(==)에 대해 알아보자 일단 뭐 부터 해야될지 모르겠다. 간단하게 String 으로 먼저 알아보고 밑에선 hashcode 도 알아보자 우리는 String을 두가지 방법으로 초기화 할 수 있다. 다들 아시다시피 String temp = "hello"; String str = "hello"; String str1 = new String("hello"); 위와 같은 방법으로 가능하다. 그럼 무엇이 다른가. System.out.println(str == temp); System.out.println(str1 == temp); 무엇이 나올까 고민해보자. true? false? 일단 저것을 알기전에 자바에선 기본자료형 참조자료형이 있다. 자세한건 구글링 말그대로 기..
-
zookeeper 노드를 만들어 보자카테고리 없음 2023. 4. 19. 09:55
이번시간엔 주키퍼의 노드를 만들어 보자 일단 주키퍼 예제는 여기 있다. 주키퍼 설치는 여기 그냥 간단하게 노드 한개만 만들어 볼 예정이다. public static void main(String[] args) throws IOException { String host = "wonwoo.ml:18813,wonwoo.ml:18815,wonwoo.ml:18819"; String rootNode = "/zk_test"; String childNode = "/zk_test/netty2"; String data = "http://localhost:9091"; ZookeeperWatcher zookeeperWatcher = new ZookeeperWatcher(host, rootNode, childNode, data..
-
vertx의 고가용성(High Availability)카테고리 없음 2023. 4. 19. 09:55
잠깐 쉬어가는 타임으로 간단하게 vertx의 고가용성에 대해 알아보자 고가용성이란 서버와 네트워크, 프로그램 등의 정보 시스템이 상당히 오랜 기간 동안 지속적으로 정상 운영이 가능한 성질을 말한다. (출처 위키피디아) 만약 한개의 vertx를 돌린다면 서버가 죽으면 답이 없다. 그래서 서버들을 관리 코디 하는 주키퍼를 써도 되는데 주키퍼가 죽으면 어카지..흠 물론 주기퍼도 여러개를 돌려야된다. 아무튼 이번시간에 주키퍼시간이 아니니까 생략 (다음편에 아마 주키퍼를 할듯하다.) vertx의 고가용성에 대해 보자. vertx는 고가용성에 대해 지원해주고 있다. 서버를 돌리다가 서버가 죽으면 기다리고 있던 서버가 다시 배포되어 돌아간다. 한번 살펴보자. 아주 간단하다. 물론 예제라 그런지. 우리는 일단 haze..
-
spring과 netty카테고리 없음 2023. 4. 19. 09:55
이번엔 spring을 이용해서 netty의 서버를 만들어보자 내용은 비슷하다. 기존에 했던거와 비슷하다. 스프링의 설정만 사용했다. main부터 보자 public static void main(String[] args) { try(AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class)){ context.registerShutdownHook(); NettyServer nettyServer = context.getBean(NettyServer.class); nettyServer.start(); } } 다들 아시다 시피 AnnotationConfigApplicationContext..