본문 바로가기

전체 글

SQL 문제풀이 3) 안녕하세요. 최근에는 하루 2~3시간 정도 SQL 문제풀이에 집중하고 있습니다. Medium 수준인데 풀이를 안보면 풀 수가 없네요. 대신 풀이는 확실하게 분석해서 풀어봅니다. 문제의 요구사항은 다음과 같습니다. 1. 테이블의 Lat_n 값의 median 값을 구해라 2. 소수점 4번째자리에서 반올림 해라 median 값이 무엇인지 wiki를 찾아보니 다음과 같았습니다. 1. 행의 개수가 홀수이면 중간값을 구하며, 짝수이면 중간에 있는 값 2개의 평균을 구해라 예를들면 개수가 홀수인 리스트 1, 2, 3, 4, 5가 주어졌을 때 median 값은 3입니다. 개수가 짝수인 리스트 1, 2, 3, 4, 5, 6이 주어졌을 때 median 값은 3.5입니다. 해당 풀이에는 2가지가 있었는데요. 첫번째 풀이부터.. 더보기
SQL 문제풀이 2) 오늘은 SQL 문제풀이 난이도 Hard 문제를 풀어봤습니다. 2시간동안 풀어봤는데 정말 어렵더군요. 결국 풀이를 보며 이해하는 것조차도 오래걸렸습니다. 문제의 요구사항은 다음과 같습니다. 1. 날짜별 시작일로부터 최소 하나이상의 제출을 했던 해커의 숫자 출력 2. 날짜별 제출했던 수가 많은 해커 아이디 출력, 만약 같을 경우 해커의 아이디 오름차순 3. 2번의 해커의 아이디에 대한 이름 출력 테이블의 구조는 다음과 같습니다. Hackers hacker_id name 15758 Rose 20703 Angela 36396 Frank 44065 Patrick 53473 Kimberly Submissions submission_date submission_id hacker_di score 2016-03-01 2.. 더보기
SQL 문제풀이 1) SQL 문제풀이 중 인상 깊은 문제가 존재하여 게시글을 작성합니다. 문제 내용을 요약하자면 다음과 같습니다. 1.테이블의 열을 행으로 표시해라. 2.행으로 표시할 때 열에 해당되는 특정 데이터는 순서가 존재한다. 3. 특정 데이터가 여러 개 일경우 알파벳 순으로 다음 행에 표시한다. 4. 행에 표시할 데이터가 없을경우 NULL로 표시한다. Output Jun July Kim hong Null amily doc collen 우선 요구사항을 정리하자면 열을 행으로 표시하기 위해 피벗을 이용해야한다는 것을 알 수 있었습니다. MySQL은 pivot을 지원하지 않지만 group_concat 함수를 이용하여 행에 열 데이터(구분자 포함)를 표시할 수 있습니다. group_concat(column, separato.. 더보기
JPA 영속 컨텍스트와 엔티티 상태 * 해당 게시글은 JPA의 공부를 위한 게시글로 JPA를 공부하며 이해했던 내용들을 정리하는 글입니다. 영속 컨텍스트(영속 컨테이너) JPA가 제공하는 영속 컨텍스트는 persistence.xml 파일을 로딩하여 Entity Manager 객체를 생성할 때 자동으로 생성됩니다. 클라이언트는 직접적으로 영속 컨텍스트를 접근 할 수 없으며 Entity Manager가 제공하는 메소드(ex persiste)를 통해서만 접근할 수 있습니다. 영속 컨텍스트가 관리하는 엔티티의 상태는 4가지로 존재 할 수 있습니다. 상태 의미 생성(NEW) 엔티티가 생성한 상태이며 영속 컨텍스트에 등록되지 않은 상태 관리(MANAGED) 생성된 엔티티가 Entity Manager의 persist 메소드를 통해 영속 컨텍스트에 등록.. 더보기
JPA 식별자 자동생성 방식 * 해당 게시글은 JPA의 공부를 위한 게시글로 JPA를 공부하며 이해했던 내용들을 정리하는 글입니다. @Id와 @GeneratedValue 애노테이션을 식별자 변수에 추가하여 자동으로 증가된 값을 할당할 수 있습니다. @GeneratedValue 속성은 2가지가 있습니다. 속성 설명 strategy 식별자 값 자동 생성 전략을 선택한다.(GenerationType 지정) generator 생성된 키 생성기를 참조한다. strategy 속성은 식별자 값 자동 생성 전략과 관련된 속성으로 TABLE, SEQUENCE, IDENTITY, AUTO 네 가지를 지정할 수 있습니다. 전략에 대한 설명은 다음과 같습니다. PK 전략 해설 GenerationType.IDENTITY auto_increment나 IDE.. 더보기
JPA 엔티티 클래스 관련 애노테이션 알아보기 * 해당 게시글은 JPA의 공부를 위한 게시글로 JPA를 공부하며 이해했던 내용들을 정리하는 글입니다. 엔티티 클래스에 설정할 수 있는 다양한 애노테이션이 존재합니다. 이 글에서는 애노테이션과, 각 애노테이션의 속성을 알아보겠습니다. @Entity JPA는 @Entity 애노테이션이 설정된 클래스로부터 생성된 객체를 엔티티로 인식합니다. name 속성으로 엔티티 이름을 정의할 수 있습니다. @Id 테이블의 기본키와 매핑되는 엔티티 클래스의 식별자 변수를 표시할 때 해당 애노테이션을 사용합니다. strategy 속성으로 데이터베이스의 key 생성 전략을 지정합니다. key 생성 전략에 대한 부분은 해당 게시글에 자세히 설명하고 있으니 참고바랍니다. @Table @Table 애노테이션의 name 속성을 지정.. 더보기
JPA란? * 해당 게시글은 JPA의 공부를 위한 게시글로 JPA를 공부하며 이해했던 내용들을 정리하는 글입니다. Java Persistence API의 약자로 ORM 기술에 대한 자바 표준 API입니다. ORM에 대해서 많은 프레임워크가 존재하며 대표적인 프레임워크로는 하이버네이트, 이클립스링크 등이 있습니다. JPA를 구현하기 위해서는 관련 라이브러리를 추가해야하며 ORM 프레임워크로는 하이버네이트를 추가하겠습니다. [pom.xml에 하이버네이트 관련 라이브러리 추가] org.hibernate hibernate-entitymanager 5.4.10.Final JPA에서 테이블과 매핑되는 자바 클래스를 엔티티 클래스라합니다. 기존의 VO 클래스가 동일한 개념입니다. 엔티티 클래스 작성방법 @Entity @Data.. 더보기
TextBox의 바이트 제한에 관하여 알아보자 WinForm의 RichTextBox 혹은 TextBox에서 한글을 입력할 경우 여러 번의 TextChanged 이벤트 함수가 호출되는 현상을 알 수 있습니다. 한글 입력 시 여러 번의 TextChanged 함수가 호출 되기 때문에 특정 바이트 이상 제한하는 로직을 추가할 경우 해당 로직을 수행되지 않음을 알 수 있습니다. 이 때, 전역변수를 통해 TextChanged가 여러 번 호출 되더라도 바이트 제한 로직을 한번 수행하도록 하게 하며 입력된 텍스트의 바이트 길이가 제한하고자 하는 바이트 길이보다 클 경우 더 이상 입력되지 않도록 KeyPress 이벤트 함수에서 e.Handle = true 를 통해 KeyDown 이벤트가 발생되지 않도록 합니다. 또한, 입력된 텍스트가 제한하고자 하는 바이트보다 큰 .. 더보기