목록Spring Boot (37)
DevKim
[ 비즈니스 로직 ] : 같은 회원이 있으면 안된다! 라고 가정 [ 회원 service 부분 ] 이때, 중복 회원 검토하는 ispresent ~~ 하면서 쭉 logic이 나오는 경우엔 메서드로 뽑아주는게 좋다고한다 단축키 : ctrl+alt+shift+T 누르면 리팩토링 관련된 여러가지가 나오는데, 여기에서 extract method 클릭 1. logic이 들어간 부분을 별도의 메서드로 뽑아주었다. 2. 기존에는 회원 service가 memorymemberrepository를 직접 생성하게 했다면, 수정 후엔, memberRepository의 코드가 회원 service 코드를 DI 가능하게 변경했다. => MemberService의 입장에서, 내가..
[ 비즈니스 요구 사항 정리 ] 1. 데이터 : 회원ID (PK 값), 이름 2. 기능 : 회원 등록, 조회 3. 가상의 시나리오 : 아직 DB는 어떤걸 쓸지 정하지 않은 상황!! → 아직 데이터 저장소가 선정되지 않아서, 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계 → DB는 정해지지 않았지만 개발을 진행하기 위해서, 초기 개발 단계에서는 구현테로 가벼운 메모리 기반의 데이터 저장소 사용 [ 일반적인 웹 계층 구조 ] - controller : 웹 MVC의 컨트롤러 역할 - service : 핵심 비즈니스 로직 구현 (회원 아이디 중복 가입이 안됨..등) - repository : DB에 접근, 도메인 객체를 DB에 저장하고 관리 - domain : 비즈니스 도메인 객체 (회원,주문,쿠폰 등..
[ 웹 개발의 기초 3가지 방법 ] 1. 정적 컨텐츠 2. MVC와 템플릿 엔진 3. API [ 정적 컨텐츠 ] 파일을 그대로 웹 브라우저에 내려주는 것 localhost:8080/hello-static.html 로 접속하면 파일 그대로 웹 브라우저에 내린 화면을 볼 수 있다. 동작 과정은 다음과 같다. 이 전에도 말했었지만 우선순위가 높은 컨트롤러에서 찾아보고 그 다음 static으로 갔는데 해당 파일이 있으니 변환없이 그대로 웹 브라우저에 띄워준다. [ MVC와 템플릿 엔진 ] 서버에서 html..등을 변경해서 내려주는 것 MVC : Model,View,Controller - View는 화면에 관련된 일만, -Controller는 서버 뒷단에 관련된 일만 -Model에다가 관련된 화면에 필요한 것들을..
[ 템플릿 엔진 ( Template Engine ) 이란? ] - 템플릿엔진은 웹 템플릿들과 웹 컨텐츠 정보를 처리하기 위해 설계된 소프트웨어이다. - view code (HTML) 와 data logic code (db connection)을 분리해주는 기능을 한다 - 쉽게 말해서, 템플릿엔진을 사용하여 html문서를 원하는 모양으로 바꿀 수 있다. 다양한 Spring Template Engine 중에서 김영한 강사님은 Thymeleaf를 사용하여서 나또한 dependencies에 Thymeleaf를 추가하여 사용하기로했다. 이 전 toy project를 진행했을 땐, static 폴더에 html,css,js 파일을 각각 넣어두고 Ajax로 요청을 보내면 서버는 요청한 데이터만 주고 프론트엔드에서 재가..
1. 인텔리제이와 gitbash 연결 IntelliJ IDEA와 Git Bash 연동하기. JetBrains 계열의 IDEA와 Git Bash를 연동하는 방법을… | by Violet Bora Lee | Medium IntelliJ IDEA와 Git Bash 연동하기 JetBrains 계열의 IDEA와 Git Bash를 연동하는 방법을 소개합니다. violetboralee.medium.com 2. $ls -arlth -> 모든 파일,폴더를 시간 역순으로 출력하는 명령어 3. ./gradlew build -> 빌드가 쭈욱 됨 4. cd build/libs ->build의 libs으로 이동하고 5. ls -arlth -> 파일들 확인 6. 성공적으로 빌드 파일이 실행되었다 7. 실행하는 방법은 java -g..
docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.repositories Spring Data JPA - Reference Documentation Example 109. Using @Transactional at query methods @Transactional(readOnly = true) public interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Modifying @Transactional @Query("delete from User u where u.active = false") v docs.spring.io 공식 홈에 들..
CRUD 할 수 있는 Controller 파일을 만들고, POST,GET,PUT,DELETE API를 만들어보았다. 보기 간편하게 ARC로 테스트를 진행 C : POST - 데이터 조회하는 API 생성 - repository.findAll() return R : GET @ RequestBody : 넘어오는 data 받음 - Course.java에 DTO 생성자 추가 U : PUT @ PathVariable - {id} 의 id 받아오기 - service.update (id, DTO) D : DELETE - repository.deleteById 로 특정 data 삭제 @RequiredArgsConstructor @RestController public class CourseController { priv..
일단 학습을 위해, In-memory DB인 H2 DB를 사용하여 웹콘솔로 CRUD 되는 것을 확인해보았다. (+) DB의 기본인 생성일자와 수정일자도 추가해줌 먼저 웹콘솔로 보이게하기 위해 다음과 같은 코드를 추가해준다. spring.h2.console.enabled=true spring.datasource.url=jdbc:h2:mem:testdb CRUD를 위해 먼저 생성해야하는 것 1. repository -> extends JpaRepository 하면 됨 2. update을 위한 service package 학습 기록용 이기에.. 이런 부분들에 대해선 자세히 서술하진 않겠다. [1] Create repository.save(new Course("스프링 연습하기","홍길동")); +) 생성일자,수..