목록Java (116)
Hayden's Archive
JPA가 제공하는 기능 설계 : 엔티티와 테이블을 매핑 매핑한 엔티티를 실제 사용 EntityManagerFactory & EntityManager EntityManagerFactory 데이터베이스를 하나만 사용하는 애플리케이션은 일반적으로 EntityManagerFactory를 하나만 생성 EntityManager 엔티티를 관리하는 관리자 엔티티를 저장/수정/삭제/조회 등 엔티티와 관련된 모든 일을 함 참고) EntityManagerFactory와 EntityManager의 생성 관련 내용 https://hayden-archive.tistory.com/478 EntityManager는 데이터베이스 연결이 꼭 필요한 시점까지 커넥션을 얻지 않음 보통 트랜잭션을 시작할 때 커넥션 획득 하이버네이트를 포함한..
JPA 구현체로 하이버네이트를 사용하기 위한 핵심 라이브러리 hibernate-core : 하이버네이트 라이브러리 hibernate-jpa-2.1-api : JPA 2.1 표준 API를 모아둔 라이브러리 hibernate-entitymanager : 하이버네이트가 JPA 구현체로 동작하도록 JPA 표준을 구현한 라이브러리 hibernate-core와 hibernate-jpa-2.1-api를 함께 내려받음 매핑 어노테이션 어노테이션 설명 @Entity 이 클래스를 테이블과 매핑한다고 JPA에 알려줌 @Entity가 사용된 클래스=엔티티 클래스 @Table 엔티티 클래스에 매핑할 테이블 정보를 알려줌 @Id 필드를 Primary Key에 매핑 @Id가 사용된 필드=식별자 필드 @Column 필드를 컬럼에 매..
JPA는 이제껏 맛보기 수준으로만 경험해봤는데 그때그때 구글링으로만 얕은 지식을 쌓는 것은 한계가 있다고 느꼈다. 백기선님도 JPA를 쓸 거면 제대로 공부하고 써야 효과를 볼 수 있고 공부 안 하고 대충 구글링만 해서 쓸 거면 차라리 안 쓰느니만 못하다고 하셨음...( https://youtu.be/brE0tYOV9jQ ) JPA 공부해야지 계속 생각만 하고 있다가 이번에 사내 스터디를 통해 김영한님의 책으로 JPA 공부를 시작하게 되었다. 책의 두께를 보니 만만치 않겠다 싶지만... 스터디의 장점을 살려 약속한 분량을 꾸준히 읽다 보면 완독을 하게 될테니 조금씩 시간을 내서 꾸준히 읽어봐야겠다. 이건 내가 보려고 정리해두는 기록~! 도입 JPA는 크게 ①테이블을 어떻게 매핑해야 하는지에 관한 설계 부분..
회사에서 고객이 작성한 내용을 바탕으로 청구서를 만드는데 HTML을 PDF로 변환해야 하는 일이 생겼다. 원래는 클라이언트에서 자바스크립트 라이브러리를 사용하여 청구서 파일을 생성하고 서버에서는 생성된 파일만 받아서 S3에 업로드한 후 PDF를 암호화하여 메일로 발송해주기로 했다. 그런데 이 작업이 클라이언트에서 15초 가량이나 소요되고 클라이언트의 기기에 따라 HTML 화면이 조금씩 달라서 복잡한 청구서의 디자인을 잘 살릴 수 없다는 문제점이 있었다. 결국 해당 이슈는 서버로 넘어와서 비동기로 처리하게 됐다. 고객이 작성한 내용은 Thymeleaf를 통해 HTML에 파싱하면 되는데 문제는 HTML을 PDF로 변환하는 작업이었다. 자바에서 사용 가능한 관련 라이브러리를 다 찾아보고 그나마 파싱이 잘 되는..
알고리즘 문제 출처 : programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 내가 작성한 코드 import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Queue; public class Solution { public int[] solution(int[] progresses, int[] speeds) { ..
알고리즘 문제 출처 : programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 내가 작성한 코드 처음에 작성했던 코드인데... public class Solution { public boolean solution(String[] phone_book) { boolean answer = true; for(int i=0; i
알고리즘 문제 출처 : programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr 내가 작성한 코드 HashMap을 이용해서 각 key(의상 종류)에 따른 value(의상 개수)를 담는다. 그 뒤 HashMap에 들어간 모든 값들을 향상된 for문에서 뽑아내는데, (특정 의상 종류의 의상 개수 + 그 의상 종류를 아예 안 입는 선택지 1개)를 모두 곱하고 모든 의상을 입지 않는 1가지 경우의 수를 빼면 정답을 구할 수 있다. import java.util.HashMap; import java.util.Map; public class Solution { public int solution(String[][] clothes..
알고리즘 문제 출처 : programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 카카오계정개발팀에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. 네오에게 주어진 첫 업무는 새로 가 programmers.co.kr 내가 작성한 코드 StringIndexOutOfBoundsException 가 터져서 코드를 다시 확인해봤는데 .이나 @와 같은 아이디가 올 경우, 맨앞이나 맨뒤에 오는 .을 제거하는 부분에서 에러가 터졌다. 이 부분에 조건을 추가해서 예외가 터지지 않도록 코드를 수정했다. 이것으로 현재까지 올라온 프로그래머스 1단계 연습문제는 모두 끝~! publ..
알고리즘 문제 출처 : programmers.co.kr/learn/courses/30/lessons/68935 코딩테스트 연습 - 3진법 뒤집기 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수 programmers.co.kr 내가 작성한 코드 public class Solution { private String numStr = ""; public int solution(int n) { int answer = 0; boolean isNotZero = false; toTernary(n); for(int i=0; i= 0; i--) ..
알고리즘 문제 출처 : programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 내가 작성한 코드 public class Solution { private String answer = ""; private String leftNum = "*"; private String rightNum = "#"; public String..