전체 글 66

JPA의 엔티티에서의 카운팅(@Formula)

JPA를 이용해 개발하다보면 모호한 부분이 많은 것 같은데 대표적인게 JPA, Hibernate, Spring JPA인 것 같다. 여기서 정리 할 내용은 아니지만 간단히 설명하면 JPA는 기술명세, Hibernate는 인터페이스, Spring JPA는 Hibernate를 스프링 프레임워크에서 쉽게 사용할 수 있게 모듈화? 해놓은 것이라는데 이게 무슨소린지 아직도 좀 어렵다. 이 이야기를 하는 이유는 오늘 설명한 @Formula는 Hibernate의 기능이기 때문이다. 현재 내가 개발하면서 @Formula를 사용하는 경우는 조건절로 사용하거나, 집계된 데이터가 필요할 때 사용하고 있는데, 이외의 경우에도 사용할 수 있는지는 파악해보고 있다. 먼저 @Formula에 대해서 간단한 설명을 하자면, 데이터베이스..

SPRING FRAMEWORK 2020.05.03

Sql 집계함수(SUM, AVG, MAX, MIN, COUNT)

JPA를 이용해 개발하다보면 몇가지 애로사항이 있는데, 그 중하나가 SQL의 집계함수를 사용할 떄 인 것 같다. 물론 @Formula라는 어노테이션을 이용해 어느정도는 해결할 수는 있다. (@Formula는 나중에 따로 정리 할 예정) 이번 포스팅하는 글에서는 sql 집계함수를 어떻게 사용하는지 간단하게 정리만 해보고자 한다. 먼저 SUM, AVG, MAX, MIN, COUNT 함수들은 엑셀의 함수들과 같은 기능을한다. (합산, 평균, 최대값, 최소값, 개수) 사용방법은 다음과 같이 쿼리문을 작성해주면 된다. 1 2 3 4 -- members 테이블에는 slary라는 급여값을 필드가 존재한다. -- select 함수명(필드) from 테이블명 select sum(slary) '합계', avg(slary)..

SQL 2020.04.21

JAVA 문자열 자르기(split)

오늘은 문자열 시리즈 두번쨰인 split에 대해서 간단명료하게 정리해보고자한다. 먼저 split 메서드는 String형의 자료를 특정조건으로 잘라준 뒤 배열로 리턴해주는 기능을 한다. 사용법을 코드로 보자면 다음과 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Test { public static void main(String[] args){ String a = "1, 2, 3, 4, 5, 6, 7"; String[] result = a.split(","); //컴마(,)를 기준으로 문자열 분리 for(int index = 0; index

JAVA 2020.04.17

라인플러스 코딩테스트 후기.

지원동기 최근 코로나19 사태로 인해 대부분의 기업들이 채용계획을 축소 OR 취소하고 있는데, 일부 기업들은 비대면으로 채용절차를 진행하고 있는 것 같다. 비대면 채용을 실시하는 회사중 하나가 라인플러스였는데, 현재 다른회사에 재직중이지만, 타회사 채용절차나 코딩테스트를 경험해보는 것도 좋을 것 같아 지원했다. 채용절차 이번 라인플러스의 채용절차의 경우 지원서작성 -> 코딩테스트 -> 이력서제출 -> 1차면접 -> 2차면접 순으로 이뤄진다고 공고문에 게시되어 있었고, 모든 절차는 인택트, 즉 비대면으로 이뤄진다고 한다. 코딩테스트 나의 경우 3월경 지원서를 접수했고, 지원서 접수마감 후에 메일로 코딩테스트에 대한 안내 메일이 온다, 대충 내용은 정해진 시간에 안내해주는 사이트에서 코딩테스트를 응시하라는 ..

REPOSITORY 2020.04.06

JAVA 문자열 치환(replace ) 사용법 정리

Java에는 문자열(String)에서 특정문자 치환해줄 수 있는 기능을 제공하는 replace함수를 제공한다. 코딩테스트나 실무에서도 유용하게 사용되는 함수이니 꼭 알아두는게 좋을 것 같다. 종류에는 replace, replaceAll, replaceFirst가 있는데, 사용법은 코드를 통해 알아보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 public void replaceTest() { // ","를 "/"로 치환 String target = "딸기,토마토,수박,사과,배,포도"; String result = target.replace(",", "/"); System.out.println(result); //결과 = 딸기/토마토/수박/사과/배/포도 S..

JAVA 2020.03.25

sql에서 날짜컬럼을 비교하는 방법?

개발을 하다보면 테이블에 날짜데이터를 저장하는 경우가 자주 있는데(아마 대부분의 테이블 설계에서 날짜 데이터는 포함되지 않을까 싶다), 현재 나는 JPA를 이용해 개발을 하고 있기 때문에 쿼리문을 작성하는 경우가 많지는 않은데, 간간히 querydsl을 이용할 때 먼저 쿼리문을 작성하여 작성한 쿼리문을 이용해 코드로 만들고 있는데, 조회조건에 날짜가 들어갈 때 어떻게 비교할 것인가에 대해서 간혹 헷갈리는 경우가 있어 정리해보고자 한다. 일단 대략 member라는 테이블이 존재하고 그 테이블에는 생성일이라는 컬럼이 존재한다고 가정했을 때, member테이블에서 2020년 3월 18일날 생성된 로우를 찾고자 할 때 쿼리문은 다음과 같이 작성하면 된다. 1 2 3 4 5 6 7 8 9 10 -- createD..

SQL 2020.03.18

JAVA의 for each문

학부에서 코딩을 하는게 아닌, 현업에서 개발을 하다보니 for문보다는 for-each문을 더 자주 사용하게 되었는데, 내가 for-each문에 대해 잘 알고쓰는게 아닌 것 같아서 간단하게나마 정리해보고자한다. 먼저 for-each문은 Java5에서 추가되었고, 기존 for문과는 다르게 반복문 안의 요소에 직관적으로 접근할 수 있게 되었다. 기존 for문과의 차이점을 코드로보자면 다음과 같다. 1 2 3 4 5 6 7 8 9 10 11 12 //main..... public void loop() { String []array = new String[]{"1", "2", "3", "4"}; for(int i = 0; i

JAVA 2020.03.10

DML, DDL, DCL 정리

정보처리기사 시험을 준비하면서 외웠던 내용들인데, 자꾸 까먹게 되어서 간단하게 정리를 해보고자 한다. ※ 컬럼(Column)과 필드(Field)는 같은의미로 사용된다. [DML] 먼저 DML(Data Manipulation Language)은 데이터 조작어를 의미한다, DML에 해당하는 명령어는 SELECT(조회), INSERT(삽입), UPDATE(수정), DELETE(삭제)등이있다, 개발필드에서는 CRUD라고도 표현하는 것 같다. DDL의 각 명령어를 작성하는 기본 틀은 다음과 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 -- select문 SELECT* FROM [table_name]; -- insert문 INSERT INTO [table_name](column_name) VALUE..

DATABASE 2020.03.06

Querydsl에서 DTO를 사용하는 방법

개발을 하고 있는데, 서로 연관 관계가 없는 테이블간에 데이터를 가져와야 할 일이 있었다, 각 Entity들에 @OneToMany나 @ManyToOne 어노테이션을 이용해 데이터를 가져오는 방법도 고려해보았으나, 위 방법은 제일 간단한 방법이였지만, 서로 연관관계도 없는 Entity에 @ManyToOne나 @OneToMany을 이용하는 건 코드품질상, 관리적 측면에서 올바르지 않다고 판단되었다, 따라서 querydsl을 이용해 데이터를 가져오기로 했으나, 막상 코드를짜서 실행해보니, 맨 앞에 선언되어있는 엔티티의 데이터만 가져오고 조인된 나머지 데이터들을 가져오지 못하는 문제가 발생했다. DTO를 이용해 데이터를 받아야겠다는 생각까지는 도달했으나, 당최 JPA서는 DTO를 어떻게 사용해야하는지 감이 안잡..

SPRING FRAMEWORK 2020.03.04