본문 바로가기

Study

(35)
JPA Repository 메서드 Repository란? 스프링부트에서는 Entity의 기본적인 CRUD가 가능하도록 JpaRepository 인터페이스를 제공함 JpaRepository 인터페이스를 상속하면 된다. 이때 사용할 Entity와 ID 값이 들어가게 된다 (JpaRepository // Member Entity의 Repository public interface MemberRepository extends JpaRepository { } 위와 같이 상속 받으면 위의 인터페이스는 다음과 같은 기능을 제공하게 된다. 메서드 기능 save() (저장) 엔티티를 저장함 findOne() (검색) pk로 레코드를 찾음 findAll() (검색) 전체 레코드 불러오기, 정렬 및 페이징이 가능함 count() (검색) 레코드 갯수 del..
클린 코드 2장 정리 #1 의도를 분명히 밝혀라 각 이름은 존재 이유, 수행 기능, 사용 방법에 대한 질문에 모두 답해야한다. 따로 주석이 필요하다면 의도르루 분명히 드러내지 못했다는 말이다. public List getThem(){ List list1 = new ArrayLIst(); for (int[] x : theList) if (x[0] == 4) list1.add(x): return list1 } 위 코드는 공백과 들여쓰지는 적당하지만, 코드가 하는일을 짐작하기 어렵다. 즉, 코드 맥락이 코드 자체에 명시적으로 드러나지 않는다. 위 코드가 지뢰게임을 한다는걸 가정하에 코드 가독성을 향상시켜 보겠다. public List getFlaggedCells(){ List flaggedCells = new ArrayLIst(); f..
클린 코드 1장 정리 1장 정리_깨끗한 코드 코드는 요구사항을 표현하는 언어이다. 나쁜 코드는 개발 속도를 떨어트린다. 깨끗한 코드란? 철저한 오류처리가 된 코드, 메모리, 누수, 경쟁 상태, 일관성 없는 명명법이 없는 상태 가독성이 좋은 코드 추측이 아니라 사실에 기반해야 한다. 다른 사람이 고치기 쉬운 코드 ‘문학’적이여야 한다. (인간이 읽기 쉽도록) 주의 깊게 작성한 코드 중복 줄이기, 표현력 높이기, 초반부터 간단한 추상화 고려를 해야한다.
[Spring] Spring Bean 정리 Spring Bean이란 무엇인가? Spring에서 POJO를 ‘Beans’라고 부른다. Beans는 애플리케이션의 핵심을 이루는 객체이며, Spring IoC 컨테이너에 의해 인스턴스화, 관리, 생성된다. Spring에 의하여 생성되고 관리되는 자바 객체이다. Spring Container란 무엇인가? Application Context를 스프링 컨테이너라고 하고, Application Context는 인터페이스이다. 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 어노테이션 기반의 자바 설정 클래스로 만들 수 있다. 스프링 컨테이너는 파라미터로 넘어온 설정 클래스 정보를 사용하여 스프링 빈을 등록함 스프링 빈의 생명 주기를 관리하며, 생성된 스프링 빈들에게 추가적인 기능을 제공하는 역할을 한다. ..
좋은 Entity 설계하는 방법들 Entity 설계시 주의할 점 Setter 사용 금지 Setter가 모두 열려있으면 변경 포인트가 많아져서 유지 보수가 힘들어짐, 어디서 해당 값이 변경되었는지 추적하기 힘듬 Setter가 필요할 경우에는 추적하기 쉽도록 메서드를 따로 생성해야함 모든 연관관계는 지연로딩(LAZY)로 설정 즉시로딩은 예측이 어렵고, 어떤 SQL이 실행될 지 예측하기가 어려움 특히 JPQL 실행 시 N+1 문제가 자주 발생하게 됨 OneToOne, ManyToOne 관계는 기본이 즉시로딩이므로, 꼭 지연로딩으로 설정해야한다. 연관관계에 필요한 entity를 한번에 가져오고 싶은 경우에는 FETCH JOIN을 사용하면 된다. 컬렉션은 필드에서 바로 초기화 해야지 NullPointerException으로 안전함 NPE 문제에서..
[그리디/우선순위 큐] 백준 11000 강의실 배정 풀이 [백준] Gold5 - 강의실 배정_11000 문제 https://www.acmicpc.net/problem/11000 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net 풀이 방법 이거 푸는데 최소 3시간 이상은 잡힌 것 같다.. 처음에 문제를 잘못보고 강의를 최대한 많이 듣는 횟수를 알아내라는 것인줄 알았는데, 계속 틀려서 다시 읽어보니 최소한의 강의실 갯수를 구하는 문제였다. 처음에 잘못된 접근법은 회의실 배정 문제처럼 종료시간을 기준으로 오름차순으로 정렬후 풀었으나, 이러면 값은 안구해진다. 시작시간으로 정렬 후 PriorityQueue를 사용해서 최소 ..
JPA 소개, 특징, 장점 및 단점 JPA의 정의 JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준이다. 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다. ORM이기 때문에 자바 클래스와 DB 테이블을 매핑한다. ORM이란 Object Reloational Mapping, 객체-관계 매핑이다. 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 말한다. Persistant API라고도 할 수 있다. JPA의 특징 JPA는 특정 기능을 하는 라이브러리가 아니고, 그저 인터페이스일 뿐이다. Hibernate는 JPA라는 명세의 구현체이고, JPA를 직접 구현한 라이브러리 이다. JPA와 Hibernate는 마치 자바의 interface와 해당 interface를 구현한 c..
독서 후기 : 멘탈의 연금술 보도 섀퍼 지음 / 출판사: 토네이도 읽은 기간: 2022.5.30 ~ 2022.6.5 멘탈의 연금술은, 어떻게 하면 한계를 넘어서 기적을 만드는가에 초점을 맞추고있고 이런 기적을 만들려면 강력한 멘탈을 소유해야 한다고 주장한다. 그리고 책은 총 3장으로 이루어져있는데, 1장은 포기하지말고 끝까지 버텨라 2장은 두려움을 과감히 쓰려뜨려라, 3장은 세상의 모든 장애물을 황금으로 만들어라로 구성되어있다. 이 책을 읽으면서 인상깊은 구절은 다음과 같다. - p23 _ 포기를 미화하지 마라 언제나 진리는 간단하다. 포기를 한 것에는 어떤 미련도 갖지 마라. 깨끗하게 단념하라. 더 많이 행동하고, 더 열심히 일 하라. 그리고 정상에 올라선 뒤에 비로소 결정을 내려라 사람이 포기를 하게되는 주된 이유는, 지금 안하..