세무민의코딩일기 42

(JAVA) JPA에 대해서 알아보자 [포토폴리오 싸이트 제작하기 1탄 - 세무민의 코딩일기]

이번 포스팅에서는 JPA에 대해서 알아보도록 합시다. 제가 예전에 JDBC에서 Mybatis까지 사용했었는데 현재는 JPA를 자주 사용한다고 해서 공부를 해봤습니다. 1. JPA? JPA란 말 그대로 (Java Persistence API) 자바 퍼시스턴스 API를 줄인 말입니다. 자바 플랫폼 중에 EE와 SE를 사용하는 응용 프로그램에서 관계형 DB 관리를 표현하는 자바 API를 말합니다. 이렇게 말하면 사실 무슨 소리인지 알기 어렵습니다. 그렇다면 퍼시스턴스라는 단어를 분석해서 볼까요? 1-1 퍼시스턴스(Persistence) 퍼시스턴스는 프레임 워크의 종류 중 하나인데 데이터의 저장, 조회, 변경, 삭제를 다루는 클레스 및 설정 파일들의 집합니다. 즉 예전에는 JDBC로 연결해서 DB에서 데이터를 ..

[세무민의 코딩일기] 보호소에서 중성화한 동물 문제 풀이

오랜만에 알고리즘 문제 풀이 포스팅으로 돌아왔습니다. 최근들어서 어떤 포스팅을 해야할지 고민도 많아졌고 재택에서 출퇴근으로 변경되서 시간이 조금 없다보니 틈틈히 포스팅 할 내용들을 찾다가 이번에 쿼리관련 코테 문제로 찾아오게 되었습니다. 1. 문제 설명 2. 예시 3. 문제 풀이 및 코드 테이블을 TB로 지칭하여서 풀이를 진행해보겠습니다. ANIMAL_INS|TB와 ANIMAL_OUT|TB에서 현재 찾아야 하는 값은 중성화가 되어서 나간 친구들을 찾는것이 중요합니다. 그렇다면 내가 해야할 방법은 SEX_UPON_INTAKE가 ANIMAL_INS|TB에서 중성화가 되지 않은 친구이면서 ANIMAL_OUTS|TB에서는 중성화가 된 친구들을 찾으면 되겠죠? 그렇다면 LEFT JOIN을 이용해서 해당 테이블을 ..

세무민의 코딩일기 : CodeTable 혹은 ZTable에 대해서 알아봅시다.

대학 시절 팀 프로젝트를 진행하면 항상 테이블 관리가 안되는게 단점이였습니다. 이럴때마다 어떻게 하면 테이블 관리를 잘할 수 있을 지 고민도 하던 시절이 그립지만 직장을 다니면서 느낀건 CodeTable 혹은 ZTable의 중요성을 알 수 있었습니다. CodeTable & Ztable? 처음 들어보셨을 수 있습니다. 둘다 같은 의미로 사용되는데 즉 테이블을 관리하는 하나의 테이블입니다. 쉽게 말하면 "백과사전" 테이블에 대한 정보들을 정리하여 하나의 테이블에 모아놓는 것을 말합니다. 해당 테이블에 속하는 컬럼으로는 "테이블 명, 테이블 코드 명, 코멘트, 업데이트 날짜 등" 다양한 컬럼들을 가지고 있습니다. 그렇다면 왜 사용할 지 간략한 예시를 통해서 보도록 하죠 제가 예전에 했던 ERD 다이어그램입니다..

DB/SQL 2021.07.21

세무민의 코딩일기 : Eclipse에서 System.out.println가 콘솔에서 출력되지 않을 때 해결하는 방법(부제 : logger란 무엇인지)

오늘 재택근무를 하면서 동료 직원이 했던 질문이 있었다. "System.out.print가 콘솔에서 출력이 안되요... Logger라는게 있다던데 그걸 사용해볼까요?" 이 질문에 대한 내 답변은 무엇이었을까? 나는 우선 2가지의 경우의 수를 말했다. Window -> Preferences -> Run/Debug -> Console -> limit console output 변경 위의 경우는 콘솔창에 출력이 제한되었을 경우를 생각하여 답변을 한 내용이다. Limit console output을 체크하지 않는 경우일 때 제한없이 출력되고 만약에 제한을 한다면 체크를 하고 버퍼의 크기를 변경해주면 된다. 기본값으로는 8만 size인데 여기서 자유롭게 추가해주면된다. 해당 콘솔에서 버퍼 크기의 최대 값은 2,1..

세무민의 코딩일기 : 화재와 소방공무원 및 장비의 관계 분석(오랜만에 데이터 분석하기)

최근 직장인으로 살아가다보니 예전에 내가 뭘 했는지 git에 올려져 있는 파일들을 보면서 추억에 빠졌습니다. 이에 따라서 한번 예전에 만들었던 데이터 분석에 대해서 포스팅을 해보는 것도 괜찮겠다고 생각이 되어서 포스팅을 진행하게 되었습니다. 이론과 실습을 구분지어 진행하고 싶지만 바로 확인해볼 수 있도록 진행해보겠습니다. 예전에 진행했던 프로젝트 중 하나는 소방공무원과 관련된 장비들 등 화재와 연관되어있는지를 분석하는 프로젝트를 했었습니다. 당시에 말도 안되는 프로젝트라고 생각했지만 그 당시 의견을 제시했던 팀원과 함께 진행했는데 생각보다 재미있는 좌표는 아니였지만 데이터 분석하는 과정을 알 수 있었습니다. 오늘 포스팅에서 다룰 부분은 일부였던 소방대상물에 대해 다뤄볼 것입니다. 소방대상물은 말 그대로 ..

Programing/Python 2021.07.17

세무민의 코딩일기 : Publishing to Tomcat v9.0 Server at localhost...' has encountered a problem 오류 해결하기

오랜만에 오류 해결 포스팅으로 찾아왔습니다. 사실 이번 오류는 워낙 다양한 부분에서 문제가 발생할 수 있었던 부분입니다. 위와 같은 오류는 현재 8080 port와 8005번 포트를 사용하고 있어서 발생하는 문제입니다. 그렇다면 해당 포트를 종료시켜주면 문제가 해결됩니다. 포트를 종료시키는 방법은 다양하게 존재하겠지만 가장 빠르게 조치할 수 있는 방법은 Cmd에서 진행하는 것입니다. #1. netstat -a -o 명령어 입력 콘솔에 위와 같은 명령어를 입력하면 아래처럼 포트에 대한 상태를 확인할 수 있습니다. 해당 8080 포드에 대한 PID는 18416번인데 이녀석을 통해서 8080 포트를 종료시켜주면 됩니다. #2. taskkill /f /pid 18416 명령어 입력 입력하면 위와 같이 프로세스가..

세무민의 코딩일기 : 개발자가 객체 설계시 염두해야 할 사항은?

개발자가 객체를 설계하는 경우에 회사에 로직이 존재한다면 큰 설계가 없이 기존 로직을 가져다 쓰는 경우가 대다수지만 때로는 개발을 해야하는 경우가 존재하다고 생각해서 작성해봅니다. 토비의 스프링이라는 E-book을 읽었을 때 생각하게 된 것입니다. # 중복 코드의 메소드 추출 로직 // 결과값 체크 로직을 만든다고 가정 # VO 로직 public class UserVo{ private String userName; private String userPhoneNumber; private String userSex; private Boolean userPhoneCheck; // getter와 setter가 존재한다고 가정 } # SVC 로직 public String addUser(UserVo user){ r..

세무민의 코딩일기 : DB 공부할 때 팁! [Group By와 Order By만 잘해도 절반은 먹고 간다. ]

인턴을 하면서 느낀점은 프로그램의 성능 최적화는 DB에서 Select 하는 과정을 어떻게 하는지가 중요한거 같다. 일반적으로 Service에서 값을 원하는 형태로 변형하여 넘겨도 되지만 쿼리로 제작할 수 있다면 제일 베스트이다. 여기서 가장 중요한건 서브쿼리, 내장함수도 중요하지만 기본적인 Group by와 Order By의 중요성이다. 우선 이론적인 학습을 해보자. 1. GROUP BY 그룹이라는 말 처럼 AVG, SUM과 같이 전체 값을 연산했을 때 주로 사용되는데 일반적으로 여러개의 행을 이용하여 통계적인 값을 추출할 수 있다. 2. ORDER BY ORDER BY는 조회하려는 데이터를 정렬로 자주 사용되곤 한다. 일반적으로 쿼리를 제작하다보면 Group by 형식 오류를 자주 접하는 사람들이 있다..

DB/SQL 2021.05.07

세무민의 코딩일기 : DB 함수 공부하기

DB에서 쿼리를 많이 작성해 본 경험이 없었다. 그렇지만 회사에서 인턴을 하면서 엄청 느끼고 있는게 쿼리를 잘 만드는 것이 데이터의 속도를 빠르게 해줄 수 있다. 내가 속한 부서가 대체적으로 운영 및 유지보수다보니 새로운 신기술은 배우기 어렵지만 DB 쿼리에 대해서 엄청 많이 볼 수 있어서 나름 배울점도 많고 부족한 점도 많다는 걸 느낀다. 최근에 업무 중에 함수를 제작하고 다양한 쿼리들을 만들면서 집에서 공부 해야겠다는 마음은 먹었으나.... 실상 회사 끝나고 집에 오면 아무것도 하기 싫어져서.... 그냥 조금씩 틈틈히 해볼 생각이다. 오늘은 기본적인 함수를 제작했다. 기존에 만들었던 테이블을 기반으로 만들었는데 항공 테이블을 가지고 진행할 예정이다. 항공 테이블은 항공사이름, 나라, 사이트, 전화번호..

DB/SQL 2021.04.18

Oracle DB로 달력 만들기!

오늘 과장님께서 주신 과제가 있어서 과제를 푸는데 과제 내용은 쿼리로 달력을 만드는것! 그래서 내가 구현한 방법은 총 3가지였다! #1 Case 문을 이용하는 방법! select min(case when WEEKDAY = 1 then DDAY end) AS 일, min(case when WEEKDAY = 2 then DDAY end) AS 월, min(case when WEEKDAY = 3 then DDAY end) AS 화, min(case when WEEKDAY = 4 then DDAY end) AS 수, min(case when WEEKDAY = 5 then DDAY end) AS 목, min(case when WEEKDAY = 6 then DDAY end) AS 금, min(case when WE..

DB/SQL 2021.04.12