'JPA' 태그의 글 목록
my code archive
article thumbnail
스프링부트 Spring Boot + JPA 쇼핑몰 상품 목록, 장바구니 기능 구현

백엔드 과제 제출로 오랜만에 처음부터 세팅해서 만져본 스프링부트 + JPA퇴사하고 약 4달만에 코딩해보는거라 처음부터 약간 버벅거렸지만..기록해보겠습니당. - 개발 환경Java 21Spring Boot 3.4.1thymeleafMariaDB 10.10- build.gradle 의존성implementation 'org.springframework.boot:spring-boot-starter-data-jpa'implementation 'org.springframework.boot:spring-boot-starter-web'developmentOnly 'org.springframework.boot:spring-boot-devtools'implementation 'org.springframework.boot:s..

article thumbnail
[개인 프로젝트] OpenAPI 조회해온 뮤지컬 정보 화면 목록 뿌리기+Bootswatch 부트스트랩

이제 뮤지컬 데이터를 DB에 INSERT까지 했으니 목록을 SELECT할 차례!! 이번에 개인 프로젝트를 하는 목적은 여러 명이서만 해봤던 프로젝트 진행 과정을 처음부터 끝까지 내 힘으로 하면서 공부하는 목적이 제일 크기 때문에 엄청 큰 규모로 할 생각도 없고 일단 혼자 힘으로 해결하는 데에 의미가 가장 크다. 그래서 프론트단은 타임리프(Thymeleaf) + 부트스트랩을 사용하기로 했다. 🤍DTO, Service, Controller, Repository 작성 -먼저 Entity와 별개로 DTO를 추가로 작성해 주었다. JPA로 처리할 때 변경이 적은 Entity 대신 DTO 객체를 만들어 원하는 컬럼의 기능만 뽑고 데이터를 교환하기 위해서. MusicalDTO 1 2 3 4 5 6 7 8 9 10 1..

article thumbnail
[스프링부트 블로그 만들기] DB 격리 수준, 스프링부트 트랜잭션, JPA OSIV란?

🔍데이터베이스 격리 수준(Isolation Level) 이란? 트랜잭션에서 일관성 없는 데이터를 허용하는 수준 🔍DB 격리 수준 종류 Read Uncommitted Read Commited Repeatable Read Serializable Read Uncommitted -> Serializable 로 갈수록 격리 수준이 높다.(high) Serializable -> Read Uncommitted 로 갈수록 격리 수준이 낮다.(low) Read Uncommitted SELECT 문장 수행 시 해당 데이터에 Shared Lock이 걸리지 않는 수준. 아직 커밋되지 않은 트랜잭션 A의 데이터를 B가 SELECT할 수 있음. Read Commited SELECT 문장이 수행되는 동안 데이터에 Shared Lo..

article thumbnail
스프링부트 공부기록(19) - MariaDB 설치, JPARepository 인터페이스 사용, 테스트 코드 CRUD 연습

🤍MariaDB 설치와 데이터베이스 생성 MariaDB는 MySQL과 거의 동일한 기능을 제공하면서 완전한 오픈 소스라는 장점이 있다. MariaDB를 통해 상용화된 서비스를 개발하고 운영하여도 라이센스 비용 걱정X, AWS와 연동 시에도 최소한의 비용으로 운영이 가능함. 1. 먼저 MariaDB를 설치해 준다. 나는 이미 설치되어 있어서 이 과정은 생략했다. 2. ROOT 계정 패스워드 기억하기, UTF-8 세팅 중요!! 3. HeidiSQL 프로그램을 실행해서 ROOT 계정 정보를 입력 후 접속 4.신규 데이터베이스를 bootex라는 이름으로 생성한다. 5. 사용자 인증 및 권한 관리를 선택 후, bootuser라는 이름으로 계정을 생성하고 해당 데이터베이스에 모든 권한을 추가하고 저장한다. 🤍Spr..

article thumbnail
[스프링부트 게시판 만들기] JPA 사용 간단한 검색 기능 구현하기

스프링 레거시 프로젝트로 검색 기능을 구현할 때에는 hidden 태그로 검색어를 감싸고... 쿼리문에 조건문도 넣고 다소 복잡하게 만들었었는데 스프링부트에서는 검색 기능 역시 JPA 기능을 통해 간단하게 구현할 수 있다. 💡JPA Repository findBy(컬럼 이름) : 컬럼에서 키워드를 넣어서 찾겠다. findBy(컬럼 이름)Containing : 컬럼에서 키워드가 포함된 것을 찾겠다. 🤍검색 기능 구현하기 BoardRepository 수정 findByTitleContaining : title 컬럼을 기준으로 해당 키워드가 포함된 것을 찾겠다. findBy 사용 시에는 완전한 제목을 입력해야 하지만 findBy컬럼Containing 을 사용함으로써 해당 키워드가 포함된 글을 검색할 수 있다. @..

article thumbnail
[스프링부트 게시판 만들기] pageable 사용하여 간단한 페이징 처리 구현하기

스프링 레거시 프로젝트를 할 땐 페이징 관련 vo를 따로 만들고 다소 복잡한 방식으로 페이징 처리를 했었는데 스프링부트에서는 JPA의 Pageable 인터페이스를 사용해서 훨씬 간단한 페이징 처리 구현이 가능하다. 🤍간단한 페이징 처리 구현하기 1. 컨트롤러 API에서 Pageable 인터페이스 타입으로 파라미터를 받는다. 인터페이스는 getPageNumber(), getPageSize() 등등 페이징 구현 시 필요한 값을 편하게 구할 수 있는 메소드를 갖고 있다. 위 코드를 설명하면 page : default 페이지 size : 한 페이지 게시글 수 sort : 정렬 기준 컬럼(여기에서는 글 번호 id) direction : 정렬 순서 (보통 게시판은 최근 글이 위로 올라와 있기 때문에 역순으로 설정함..

article thumbnail
스프링부트 공부기록(5) - 게시판 프로젝트 :: Dao 도메인 패키지, 글 등록, 수정, 조회 JPA 어노테이션, 테스트 코드 작성

domain 패키지 : 도메인을 담을 패키지, 여기에서 도메인이란? 게시글, 댓글, 회원, 결제 등 소프트웨어에 대한 요구사항 혹은 문제 영역에 해당됨. 기존 MyBatis에서 dao 패키지 역할과 비슷함. 단, 기존에는 xml에 쿼리를 작성하고 클래스에서 쿼리의 결과를 담았다면 이제 모든 것이 도메인 패키지에서 해결됨. Web, Sercice, Repository, Dto, Domain 5가지 레이어 중 비지니스 처리를 담당할 곳이 바로 Domain. 기존에는 모든 로직이 서비스 클래스 내부에서 처리됐기 때문에 서비스 계층이 무의미했으나 도메인 모델에서 처리할 경우 각자 본인의 이벤츠 처리를 하며 서비스 메소드는 트랜잭션과 도메인 간의 순서만 보장해 준다. 테스트 코드 작성 패키지 구조 🤍1. Post..

article thumbnail
스프링부트 공부기록(4) - JPA로 데이터베이스 다루기

12월 중순부터 2월말까지 열심히 학원 팀프로젝트를 진행했다. 진행하면서 느낀 점은 웹 개발과 DB가 정말 뗄레야 뗄 수 없는 관계구나...생각했다...ㅎㅎ 코드 한줄 한줄 짜는 것만큼 쿼리문 한줄 한줄 짜는 것도 정말 어렵고 복잡했는데 스프링부트에서는 JPA라는 새로운 데이터베이스 기술을 사용하고 있다고 한다. 쿠팡, 우아한형제들 등 자사 서비스를 개발하는 곳에서는 SpringBoot&JPA를 전사 표준으로 사용하고 있다고 한다. 🤍JPA란? 기존 데이터베이스 방식은 객체지향 프로그래밍에서 조금 벗어난, 데이터베이스 모델링에만 집중하는 방향이었다. JPA는 이런 문제점을 해결하기 위해 등장했다. 관계형 데이터베이스 - 객체지향 프로그래밍 언어 2개 영역을 중간에서 패러다임 일치를 시켜주기 위한 기술. ..

반응형
반응형