일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 우분투
- Git
- 두수의 합 자바
- 페이징 정렬
- MySQL
- 스프링부트 OpenAI API
- 넘파이
- github 복제
- 자바
- 저장소 이전
- JDBC
- 스프링 이메일 전송
- swap 메모리
- springboot
- 서버 배포
- jar빌드
- Chat GPT
- Servlet
- 프로그래머스
- 저장소 복제
- MVC
- 파이썬
- JPQL
- Json 객체
- HttpServletResponse
- 비밀번호 재설정 API
- JPA
- 값 타입
- api 개발
- git 충돌 해결
- Today
- Total
목록스프링부트 실습 (18)
현의 개발 블로그

본 글은 아래 강의를 듣고 정리한 글입니다. 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 - 인프런 | 강의 실무에 가까운 예제로, 스프링 부트와 JPA를 활용해서 웹 애플리케이션을 설계하고 개발합니다. 이 과정을 통해 스프링 부트와 JPA를 실무에서 어떻게 활용해야 하는지 이해할 수 있습니다., - 강 www.inflearn.com 프로젝트 생성하기 start.spring.io에서 프로젝트를 생성한다. dependencies에서 해당 라이브러리와 프레임워크를 추가해준다. Junit5를 사용하지 않고 Junit4를 사용할 예정이다. Gradle에 아래 코드를 추가해준다. testImplementation("org.junit.vintage:junit-vintage-engine") { exc..

대출 기능 리팩토링 다음과 관계도처럼 리팩토링 할 것이다. User 객체에 비즈니스 로직을 추가한다. 대출이라는 행위가 User, UserLoanHistory 객체의 협력으로 가능해졌다. public void loanBook(String bookName){ this.userLoanHistories.add(new UserLoanHistory(this, bookName)); } Cascade로 인해, User에 새로운 userLoanHistories값이 저장되면, UserLoanHistory에도 해당값이 저장됨 유저 정보와 책 정보를 기반으로 userLoanHistory를 저장하는 코드를 위의 함수로 바꿀 수 있다. UserLoanHistory를 직접 사용하지 않고, User에서 대출 기록을 저장하도록 변경..

앞에서 객체 지향적 프로그래밍을 위해 연관관계 매핑이 필요하다고 말했었다. 그에 따라 UserLoanHistory와 User에 양방향 매핑을 해주었다. 이제 BookService부분을 고치기 전에 연관관계 매핑에 대해 추가로 알아보자. 다양한 연관관계 매핑 연관관계는 이전 글에서 다룬 1:N 말고도 1:1, M:N 이 존재한다. 1:1 관계 한 주소에 한 사람만 거주할 수 있다고 가정해보자. 한 사람도 한 주소지만 가질 수 있다. 이 때 사람과 주소는 1:1 관계가 성립한다. 다음과 같이 테이블을 생성한다고 해보자 사람을 조회한 다음 해당 사람의 주소를 조회하는 경우가 많기 때문에, person에서 address를 참조하도록 하였다. 그에 따라 person이 address_id를 포함하여 연관관계의 주..

앞서 개발했던 대출 기능 관계를 살펴보자 BookService는 Book 객체를 가져오고, UserLoanHistoryRepository를 통해 검증 한다. 그 후 User를 가져와서, Book과 User를 UserLoanHistory에 저장한다. 이는 절차 지향적 프로그래밍이다. User만 가져와서 대출 처리를 한다면 객체 지향적으로 바꿀 수 있다. 반납 기능도 살펴보자 기존에는 BookService가 User에서 유저 정보를 가져오고, UserLoanHistory에서 반납 처리를 했다. User가 UserLoanHistory를 갖고 있고, BookService에서 User만 가져와 반납 처리를 하도록 바꿀 수 있다. 이처럼 대출과 반납 기능을 객체 지향적으로 프로그래밍하기 위해서는 User와 User..
책 생성 API 개발 API 명세서 HTTP Method POST HTTP Path /book HTTP Body {"name" : String} 결과 반환 X book 테이블 설계하기 create table book ( id bigint auto_increment, name varchar(255), primary key (id) ); @Column length 기본값이 255라서 varchar(255)로 지정했다. Book 객체 생성 @Entity @NoArgsConstructor(access = PROTECTED) public class Book { @Id @GeneratedValue private Long id; @Column(nullable = false) private String name; pu..
JDBC의 한계 앞에서는 SQL을 직접 사용해 DB에 접근하였다. 이러한 방식은 다음과 같은 한계점이 존재한다. 1. SQL문을 직접 작성하기 때문에 오타가 생길 수 있다. 2. 반복 작업이 많아진다. 매번 INSERT, SELECT, UPDATE, DELETE 쿼리를 날려줘야 한다. 또한, SELECT 쿼리를 작성할 때 필드를 하나씩 매핑해줘야 한다. 3. 특정 데이터베이스에 종속된다. SQL도 MySQL, MSSQL 등 문법이 조금씩 다른데, DB를 바꿔야 한다면 코드를 그에 맞게 수정해야 한다. JPA(Java Persistence API) 정의 객체와 관계형 데이터베이스를 짝지어 데이터를 영구 저장하도록 정해진 규칙이다. *Persistence: 영속성; 데이터를 생성한 프로그램이 종료되어도, 그..