일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 하이브리드접근법
- Kafka
- N+1문제
- JPA
- kafka배포
- 캐시의 작동 원리
- QA
- 스프링시큐리티
- 오버로딩
- 티스토리챌린지
- 자료구조
- n8n
- 자동화워크플로우
- 프로토콜역할
- 테스트케이스
- 헥사고날아키텍처
- jwt토큰
- 엘라스틱서치
- XSS
- 자바
- 메소드
- Java
- 오블완
- 프로세스와스레드의차이
- selenium
- springboot
- nplus1
- 부트캠프
- 한화시스템부트캠프
- STOMP
- Today
- Total
아쿠의 개발 일지
한화 시스템 부트 캠프 9주차 회고 본문
안녕하세요 여러분 현재는 11주차 교육을 듣고 있는 김아쿠입니다. (^ㅡ^,, 열심히 배우는 중)
어떻게 된 일인지...에 대해서 변명을 해 보자면, 스프링 교육이 너무너무 지쳐 복습하느라 이렇게 됐습니다.
9주차에 무엇을 배웠나 생각을 해 보니 JPA를 배웠습니다.
JPA는?
자바 진영에 ORM 기술 표준으로 사용되는 인터페이스의 모음이다. 그 말은 즉, 실제적으로 구현된 것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다.
Spring Data JPA는?
스프링 부트는 JPA 중에서 Hibernate라는 구현체를 사용한다.
Spring Data JPA는 이런 Hibernate를 좀 더 쉽게 사용할 수 있는 추가적인 API들을 제공한다.
Spring Data JPA가 DB에 데이터를 다루는 과정
Spring Data JPA < - > Hibernate <-> JDBC <-> DB
<-> 이거 화살표임...
Spring Data JPA 구성요소
1) 엔티티 : 테이블과 직접적으로 매핑되는 클래스
학생 클래스
String 이름;
Integer 나이;
학생 학생1 = new 학생('테스트1', 10);
학생 학생2 = new 학생('테스트2', 20);
학생 테이블
이름 나이
테스트1 10
테스트2 20
생각보다 좀 깨져서 나오네요. 나이가 10 , 20이라는 것입니다.
2) 레포지터리 : 엔티티 객체들을 처리하는 기능을 가진 인터페이스
Entity는?
@Entity
클래스에 지정, 해당 클래스가 엔티티 클래스라는 것을 명시
@Table
엔티티 클래스를 DB의 어떤 테이블과 매핑시킬지 지정 , name 속성을 이용해서 특정 테이블의 이름을 지정
ex ) @Table(name="테이블이름")
@Id
기본키에 해당하는 변수에 지정
엔티티 클래스에서 @Id로 지정한 변수가 없으면 에러 발생
@GeneratedValue
사용자가 입력하는 값이 아닌 자동으로 생성되는 값을 사용할 때 사용
Column
추가적인 칼럼이 필요한 경우에 사용
연관 관계 매핑하는 방법에 대해서는 제 블로그의 Java 공부한 것을 보시면,,, 됩니다.
https://d-aqu.tistory.com/24
[SpringBoot] Entity간의 관계 설정
학생 수강(Enrollment, EnrollmentRepository, EnrollmentService, EnrollmentController) 학생 외래키 수업 외래키 수업(Lecture, LectureRepository) lectureName 각각의 엔터티가 다음을 가지고 있다고 치자.다 제외하고학생 -
d-aqu.tistory.com
package org.example.day13.member.model;
import jakarta.persistence.*;
import lombok.*;
import org.example.day13.likes.model.Likes;
import org.example.day13.post.model.Post;
import java.util.ArrayList;
import java.util.List;
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Builder
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idx;
private String email;
private String password;
private String role;
private Boolean enabled;
/*
Post (1 : N 관계)
*/
@OneToMany(mappedBy = "member")
private List<Post> posts = new ArrayList<Post>();
@OneToMany(mappedBy = "member")
private List<Likes> likes = new ArrayList<Likes>();
}
최근 작성한 Member 엔티티인데요.
현재 lombok 이라는 라이브러리를 사용하고 있습니다.
lombok은 자바 애플리케이션 개발을 단순화하고 생산성을 높이기 위해 사용하고 있습니다
원래는 Getter Setter를 하나하나 만들었다면 @어노테이션으로 편리하게 간결한 코드를 작성할 수 있습니다.
++ 자동으로 코드가 생성되기 때문에 실제로 생성된 코드를 보기는 어려우니 디버깅 시 주의하시길...
@Bean
이때 정말 어려웠습니다 네...
클래스의 객체를 반환하는 무언가를 만들었는데, 이 객체를 Bean으로 만들어놓고, 어디서든지 가져다 쓸 수 있도록 하는 것입니다.
@Builder
builder 패턴은 객체 생성 과정을 단순화하고, 복잡한 객체를 단계별로 구성할 수 있게 하는 소프트웨어 디자인 패턴입니다. 이 패턴은 특히 생성자 매개변수가 많거나, 객체의 구성에 많은 단계가 필요한 경우에 유용합니다.
요즘 생성자 매개변수를 참 많이 만들어서 코드가 엄청 길어졌는데요 간결하게 된 것을 보여드릴게요.
이렇게 긴 코드인 친구를
확실히 코드의 간결성이 보이시나요 ? . . . 이젠 다시 전처럼 하라고 해도 못 합니다 하하.
갑분 결론
빌더 사용하세요 롬복 사용하세요
Keep
현재 주말에 열심히 강의를 듣고 다시 재차 구현해보고를 반복하고 있다. 공부를 이렇게 하니까 확실하게 얻어가는 게 많은 것 같다. 다시 처음부터 Java를 배운다면 정말 잘 할 자신이 있을만큼 그동안 이렇게 하지 않음에 후회스럽다.
복습이 정말 중요한 것 같다. 복습 꼭 하기 !
Problem
회고록 좀 열심히 쓰자.
필기를 할 때 노션으로 대충 적지 말고 1. 노트 2. 노션 3. 회고록 이런식으로 순차적으로 복습하고 암기하기.
집에서 그만 자라. 요즘은 잠을 6시간 이상 못 자면 삶이 힘들다... 하지만 어쩔 수가 없다.
통근러의 삶이란 ,,, 🎃🎃
Try
자격증 공부 좀 해라. ++ 금요일에서 토요일로 넘어가는 새벽부터 쭉 공부하자. 매번 졸려서 1시 전에 잠든다.
나중엔 정말 아무것도 안 보고 혼자 해 보기. 지금은 아직 yml 파일이나,,, build.gradle에 뭐가 들어가야 하는지 종종 본다.

감사합니다. 주중에 10주차도 올라올 예정입니다.
'ETC > 한화시스템' 카테고리의 다른 글
한화 시스템 부트 캠프 10주차 회고 (4) | 2024.07.09 |
---|---|
한화 시스템 부트 캠프 6월 회고 (2) | 2024.07.09 |
한화 시스템 부트 캠프 8주차 회고 (38) | 2024.06.22 |
한화 시스템 부트 캠프 7주차 회고 (7) | 2024.06.19 |
한화 시스템 부트 캠프 6주차 회고 (8) | 2024.06.09 |