
인프런 김영한 T의 실전! 스프링 부트와 JPA 활용1 강의를 들으며 연관관계 매핑 과정에 대해 정리한다. erd 설계 후 엔티티 매핑 과정시에 내가 참고할 용도로 제작하였다. 독자들도 erd 설계 후 이 방식에 맞춰 엔티티 클래스를 개발하면 될 것 같다. 바로 들어가보자. 📌 @--ToMany ✔ (mappedBy = "") 적용 ✔ 예시 @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) private List orderItems = new ArrayList(); 📌 @--ToOne ✔ (fetch = LAZY) 적용 ✔ @JoinColumn(name="") 적용 ✔ 예시 @OneToOne(fetch = LAZY, cascade = CascadeTy..

오늘은 @Enumerated란 무엇이며 언제 어떻게 사용해야하는지 알아보자. 엔티티 매핑에서 Enum 타입을 사용할 때 @Enumerated 어노테이션을 사용하는데 우선 @Enumerated 어노테이션의 종류는 두 가지이다. ✔ EnumType.ORIGINAL : enum 순서(숫자) 값을 DB에 저장 ✔ EnumType.STRING : enum 이름 값을 DB에 저장 예시를 들어보자. 다음과 같은 enum 클래스에서 어노테이션의 종류가 EnumType.ORIGINAL이라면 ORDER ==> 1로 저장 CANCEL ==> 2로 저장된다. 어노테이션의 종류가 EnumType.STRING이라면 "ORDER", "CANCEL" 로 저장된다. ❌ 근데 EnumType.ORIGINAL은 함부로 사용할 수 없다. ..

오늘은 @Embedded는무엇이며 언제 어떻게 사용하는지에 대해 알아보자. 바로 시작해보자. 🔥 회원 엔티티가 다음과 같다고 가정해보자. 회원 엔티티는 이름, 도시, 주소 번지, 주소 우편번호를 가진다. 이때 도시, 주소 번지, 주소 우편번호는회원의 '주소'를 알기 위해 가지는 컬럼들이다. 이때 상세 데이터(도시, 주소 번지, 주소 우편번호) 또한하나의 객체로 묶어보다 객체지향적으로 설계할 수 있다. 도시, 주소 번지, 주소 우편번호를주소라는 객체로 묶어 표현하면 보다 객체지향적인 코드가 될 것이다. 이때 사용하는 것이 @Embedded, @Embeddable이다. @Embeddable@Getterpublic class Address { private String city; private ..

오늘은 백준 11047 문제를 포스팅하겠다. 바로 들어가보자. 🔥 백준 문제 보기 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 그리디 알고리즘이 코딩 테스트 유형으로 많이 출제된다고 하여 풀어보았다. 생각보다 간단한 문제였다. 바로 코드를 살펴보자. 😊 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.uti..

엔티티 설계시 주의할 점에 대해 학습한 내용을 정리한다. 같이 알아보도록 하자. ✔ 엔티티에는 가급적 Setter를 사용하지 말자! - Setter는 변경 가능하기 때문에, 유지보수가 어렵다. ✔ 모든 연관관계는 지연로딩으로 설정하자! - 즉시로딩(Eager)은 예측이 어렵고, 어떤 SQL이 실행될 지 추적하기 어렵다. 특히나 JPQL을 실행할 때 N+1 문제가 발생할 수 있다! @XToOne(OneToOne, ManyToOne) 관계는 기본이 즉시로딩이르모 직접 지연로딩으로 설정해야한다! ✔ 컬렉션은 필드에서 초기화하자. - null 문제로부터 안전하기 때문이다. 별 내용 없어 보여도 굉장히 중요한 내용이니 꼭 기억하자!! 그럼 오늘도 열심히 개발하자. 🔥

오늘은 캡스톤 프로젝트를 진행하다 querydsl로 검색 기능 구현 중 booleanBuilder가 동작하지 않는 에러를 해결한 포스팅을 진행해보려고 한다. 말로 설명하기 어려운 부분이 있어서 최대한 코드로 열심히 설명할텐데 부디 많은 분들에게 도움이 되었으면 한다. 그럼 바로 들어가보자. 우선 에러 코드는 다음과 같다. Pageable 기능을 이용해서 Paging 기능을 구현하고 paging에 따른 동적 쿼리를 작성해야 하기 때문에 BooleanBuilder를 이용해서 다음과 같은 메서드를 작성했다. 그런데 저 메서드와 다음과 같은 메서드에서 BooleanBuilder를 인식하지 못하는 에러가 발생했다. 에러메세지는 뭐 당연히 저 줄에서 에러가 난다는 것이었고 BooleanBuilder를 인식하지 못한..

강의를 듣다 테스트 케이스를 실행했는데 다음과 같은 에러가 발생했다. 무슨 에러이며 어떻게 해결할까? 🤔 같이 확인해보자. 우선 에러메세지는 다음과 같다. org.junit.vintage.engine.descriptor.RunnerTestDescriptor warnAboutUnfilterableRunner WARNING: Runner org.junit.internal.runners.ErrorReportingRunner (used on class com.example.jpashop.service.MemberServiceTest) does not support filtering and will therefore be run completely. does not support를 보아하니 뭘 지원안해준다는 뜻인..

인프런 김영한 선생님의 강의를 듣다가 코드 정렬 단축키를 알게 되어 나에게 익숙해질 수 있도록 기록할겸 공유한다. 🤔 과연 어떤 단축키일까? 다음의 예시 코드를 보자. 필자가 예를 들기 위해 억지로 만들어 놓은 정렬 안된 코드이긴 하지만 이 코드를 정렬하려면 다음의 단축키를 이용하면 된다. 우선 정렬할 코드를 드래그하고 Ctrl+Shift+Alt+L(Windows 기준)을 누르면 된다. 그러면 다음과 같은 팝업이 뜨는데 Run을 누르면 코드가 자동 정렬되는 것을 알 수 있다. 코드 정렬 단축키의 경우 사용할 일이 많으므로 꼭 알아두도록 하자. 그럼 오늘도 열심히 개발하자. 🔥

일반적인 웹 애플리케이션 계층 구조에 대해 알아보자. 컨트롤러 : 웹 MVC의 컨트롤러 역할 서비스 : 핵심 비즈니스 로직 구현 리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인 : 비즈니스 도메인 객체, ex.회원,주문,쿠폰 등 주로 데이터베이스에 저장하고 관리됨. 클래스 의존관계에 대해 알아보자. 🤔 MemoryMemberRepository를 사용하는 이유 => 개발 과정 중에 아직 DB가 정해지지 않았을때 memory 구조로 설계하고 나중에 DB 연결함.

인프런의 '김영한'선생님 강좌를 본 사람은 다 알겠지만 단축키를 사용하면 화면 하단에 단축키가 뜬다. 이 PlugIn을 설치해야지,, 하다가 결국 드디어 설치하게 되었다. 어떻게 설치하는지 같이 알아보자. 1. [File] -> [Settings]에서 Plugin을 검색하고 Plugin 탭 안에서 Key Promoter X를 검색한다. 설치가 완료되면 'Restart' 버튼을 눌러 IntelliJ를 재시작한다. 단축키 알림을 좀 더 보기 편하게 하기 위해 다음의 플러그인도 설치한다. IntelliJ를 재시작하고 나면 정상적으로 작동하는 것을 확인할 수 있다. 오늘은 미루고 미루던 단축키 plugin을 설치해보았다. 이제 뭔가 강사님(?) 느낌도 나니까 더욱더 열심히 개발해보자 🔥
- Total
- Today
- Yesterday
- 코드
- 풀이
- 22 정보처리 산업기사
- 챌린지
- 정보처리산업기사
- 코틀린
- 소스코드
- 해커랭크 챌린지
- 22 정보처리산업기사
- hackerrank
- 백준
- Java
- JPA
- 자바
- hackerrank challenges
- 해커랭크
- 해커랭크 자바
- 정보처리산업기사 공부법
- 자바의 정석
- 해커랭크 자바 챌린지
- challenges
- 강의
- 이코테
- ORM
- Spring Security
- Kotlin
- 알고리즘
- 정보처리 산업기사
- 그리디
- 디버깅
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |