| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- RunWith
- 스프링 데이터 JPA
- 의존성 주입
- 테스트 코드
- restTemplate
- 빈 스코프
- 기본 생성자
- JPA
- Java Reflection API
- 통합 테스트
- entity
- testresttemplate
- 좋은 객체지향 설계 원칙
- 406 NOT_ACCEPTABLE
- 컴포넌트 스캔
- 스프링 IoC 컨테이너
- 스프링 컨테이너
- jdbc template
- ResponseEntity
- 의존관계 자동 주입
- 스프링
- 405 METHOD_NOT_ALLOWED
- Controller
- 가을야구
- SpringBootTest
- 랜덤 포트
- 정적 컨텐츠
- jdbc
- Not Acceptable
- 키움
- Today
- Total
목록전체 글 (54)
코드네임 JY
🌏 해커톤 과정 ✅ 날짜 : 2023년 7월 3일 (월) 13:00 ~ 7월 4일 (화) 10:00 (무박 2일) ✅ 주제 : '자유로움' / '트러블슈팅' / '플레이그라운드' 중에서 하나 이상의 키워드를 조합해서 주제 선정 UMC는 대학교 연합 IT 동아리인데, 이번 해커톤은 UMC에 참여하는 모든 대학교가 참여해 상당히 큰 규모로 열린 대회였다. 태어나서 처음 경험해 본 해커톤이었다! 과연 내가 밤을 새서 코딩할 수 있을지.. (고민하며 전날 일부러 4시에 잠을 잤다 ㅋㅋㅋ) 팀은 랜덤 매칭이었다! 총 10개의 팀으로 나누어졌고 각 팀마다 일정한 비율로 정해진 직군이 있다. 각자 PM / 디자이너 / 프론트(Web, Android, iOS) / 서버(Spring, Node) 직군 중 하나를 가지는데..
가끔 유튜브나 트위치 방송 보면 도네로 보이는 유명한 밈인거 같아서 함 써봤다 (https://youtu.be/qrNzC5NWro0) 나는 절대로 포스팅 주제랑 관련 없는 제목은 들고 오지 않는다는 사실 내용을 보면 왜 이 제목을 썼는지 알게 될 것이에요 호호 🎱 DTO (Data Transfer Object) DTO의 사전적인 의미는 '계층 간 데이터 교환을 위해 사용하는 객체' 이다. 여기서 말하는 계층은 Presentation Layer / Business Layer / Data Access Layer 정도로 알려져 있는데, 정말 단순화해서 보면 이는 각각 Controller / Service / Repository 를 의미한다고 보면 된다! 데이터는 엔티티에 담겨 있다. 그렇다면 엔티티를 계층마다..
🎾 프록시 즉시 로딩과 지연 로딩의 매커니즘을 이해하려면, '프록시' 라는 개념을 먼저 알아야 한다! '프록시' 라는 단어의 의미는 '무언가를 대신한다' 라는 느낌이 강하다! 예를 들어 '프록시 서버' 라는 것이 있지 않나! Hibernate는 '프록시 클래스' 라는 가짜 클래스를 만들 수 있다. 이는 실제 클래스를 상속 받아서 만들어진다. 그래서 우리가 직접 코드를 짜거나.. 등의 행위로 프록시를 직접 만들어서 사용할 일은 없다! 프록시 클래스는 실제 클래스를 상속 받아서 만들어지기 때문에, 실제 클래스와 겉 모양은 같다. 그리고 내부에는 실제 객체의 참조(target) 를 보관한다! 따라서 프록시 객체는 특정 시점에 실제 객체를 호출 할 수 있다! 프록시 클래스는 em.getReference( ) 를..
처음 연관관계를 생각할 때, 나는 엔티티부터 생각하고 테이블 설계로 넘어갔다. 하지만 생각하지 못한 부분이 너무나도 많았다..! 컬럼 안에서는 리스트 형태로 데이터를 가질 수 없지 않나! 자바로 먼저 코드 짤 생각부터 하니 데이터베이스 설계가 망가졌다. 🥲🥲 따라서 테이블을 먼저 설계한 후에, 엔티티를 세팅 하도록 하자! 앞으로도! 🏈 테이블 설계 현재 프로젝트에서 사용할 테이블은 총 4개이다. ✅ 회원 정보, USER ✅ 음악 플레이리스트, PLAYLIST ✅ 음악 그 잡채, MUSIC ✅ 아티스트 정보, ARTIST 이 친구들은 서로 연결지어 사용하려면, 테이블 간의 연관관계를 알아내야 한다! 서로 어떤 관계를 가져야할지 고민해보자! MUSIC & ARTIST 하나의 ARTIST는 다수의 MUSIC을..
⚾️ 요구사항 분석 🏀 구현 단계 [STEP 1] 엔티티 세팅 및 CRUD 기능 구현 ✔️ 기본적인 엔티티 & 연관관계 세팅 ✔️ 음악 등록 / 조회 / 수정 / 삭제 ✔️ 아티스트 등록 / 조회 / 수정 / 삭제 [STEP 2] 회원 관련 처리 및 플레이리스트 기능 구현 ✔️ 회원 로그인 처리 (간단 로그인) ✔️ 회원에 대한 음악 및 아티스트 등록 / 수정 / 삭제 권한 ✔️ 플레이리스트 기능 구현 ---------------- 백엔드 구현 완료 ---------------- [STEP 3] 웹 화면과 연동 ✔️ 프론트엔드 구현 및 연동 (리액트 생각 중) ✔️ 웹 화면 UI 구성하기 --------------- 프론트엔드 구현 완료 --------------- [STEP 4] 로컬 환경에서 외부로 ..
🍳 다중성 다대일 (N : 1) '다대일' 관계는 '다' 방향에서 항상 연관관계의 주인 을 가진다! 생각을 조금만 해보면 알 수 있다. '일' 방향에서 여러 데이터를 가지고 있어야하는데, DB 테이블에는 한 컬럼에 리스트 형태로 데이터를 담을 수 없다. 따라서 '다' 방향에서 어떤 PK 값과 연결되어야 하는지 알려주는 FK 값을 가져야 하고, 여기서는 연관관계의 주인이다! 그리고 '일' 방향에서 반대편의 데이터를 조회할 수 있다! 내가 여기서 잠깐 간과했던 것이.. 위에서 말했던 것! "DB 테이블에는 한 컬럼에 리스트 형태로 데이터를 담을 수 없다" 라는 사실이다. 엔티티를 볼 때는 musics 라는 리스트 가 추가되었지만 실제 데이터베이스와는 전혀 상관없는 필드 이다. 이는 단순히 조회용 리스트 일 ..
🥯 객체 vs 관계형 데이터베이스 패러다임 차이 관계형 데이터베이스에서는 다음과 같은 방식으로 테이블 간 관계를 알 수 있다. 예를 들어, MUSIC 테이블은 어떤 가수의 노래인지에 대한 정보가 필요하므로 ARTIST 테이블과 연결되어 있다. 이는 MUSIC 테이블 내에서 ARTIST 테이블에 있는 컬럼들의 PK 값을 가지는 외래 키 방식 으로 구현할 수 있다. public class Music { private Long id; private String title; private Long artist_id; // Music → Artist } public class Artist { private Long id; private String name; } 위 코드는 객체를 테이블에 맞추어 모델링한 결과이다..
🍳 객체와 테이블 매핑 @Entity 어노테이션 ✅ 객체를 테이블에 매핑할 수 있게 해주고, 이제부터 JPA가 관리해준다! ✅ 기본 생성자 반드시 필요하다! (한 달 전에 엔티티 공부할 때 고생했던 기억! 링크 🖇️) @Table 어노테이션 ✅ 간단하게 사용할거면 테이블 이름 정도 바꾸는 용도로 사용! 데이터베이스 스키마 자동 생성 스프링에서 DB를 사용하다보면, properties 파일이나 yml 파일에서 spring.jpa.hibernate.ddl-auto 옵션을 볼 수 있다. 로컬에서 혼자 개발하는거면 큰 상관이 없을텐데.. 사람들이랑 팀 프로젝트를 한다면 이런 설정 하나 잘못했다가는 큰일이 난다.. ✅ create : IF 기존 테이블 있으면 DROP 진행하고 CREATE → 잘못 사용하면 큰일난..
🍟 EntityManager 그리고 트랜잭션 EntityManager를 사용하면 내부적으로 DB Connection을 사용해 데이터베이스를 사용 할 수 있게 된다. 생성 단위는 요청(한 트랜잭션 단위)이 들어올 때마다 새롭게 선언 하며, 하나의 트랜잭션이 완료되면 꼭 close 해주어야 한다! 절대로 쓰레드 간 EntityManager를 공유해서 사용하면 안 된다! 한 트랜잭션 안에서만 사용하고 닫아야 한다! 이런 EntityManager를 만들어내는 공장이 따로 있다! 공장의 이름은 EntityManagerFactory 라고 한다! EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnitName); EntityMa..
🍒 외래 키로 엔티티 간 관계 설정 ✅ 기본 키(Primary Key) : 행 데이터에 대한 고유 식별자 (중복 ❌ / NULL 허용 ❌) ✅ 고유 키(Unique Key) : 기본 키로 지정되지 않은 행 데이터에 대한 고유 식별자 (중복 ❌ / NULL 허용 ⭕️) ✅ 외래 키(Foreign Key) : 관계형 데이터베이스에서 다른 테이블(부모 테이블)의 행을 식별할 수 있는 키 기본 키와 고유 키는 테이블을 생성할 때 다음과 같이 만들어낼 수 있다. CREATE TABLE User ( id INT AUTO_INCREMENT PRIMARY KEY, first_name CHAR(2) UNIQUE, last_name CHAR(3) ); id 필드는 기본 키이고, first_name 필드는 고유 키이다! 하..