SpringBoot/JPA

TODO : JPA insert 문 직접 작성 (dml : 테이블 데이터 변경 , 트랜잭션을 동반) @Transactional(트랜잭션을 동반한다.) @Modifying(테이블 데이터 변경) :#{#매개변수} 사용법 ( Oracle 쿼리문 사용 ) ( 객체형식이라면 :#{#} 을 사용해야 한다. ) @Transactional @Modifying @Query(value = "INSERT INTO TB_REPLY_BOARD " + "VALUES(:#{#replyBoard.변수명}), nativeQuery = true) int insertByBoard(@Param("replyBoard") ReplyBoard board); 예제 /** * TODO : 게시물 저장 * 최초 생성 (board_group [그룹(자..
Pagealbe 객체(인터페이스) org.springframework.data.domain 페이징 처리에 필요한 정보들을 모아두는 곳 react - npm # Material Page component 업그레이드 # 과거 v4 -> v5 변경 설치 npm i @mui/material @emotion/react @emotion/styled # 소스에서 임포트 사용법 : import Pagination from '@mui/material/Pagination'; 객체 만들기 // TODO : 사용법 : Pageable pageable = PageRequest.of(현재페이지번호,1페이지당 개수); Pageable pageable = PageRequest.of(page, size); < Spring..
react 일 경우, react ↔ springBoot 연동 : axios 기본 웹브라우저의 내장된 프로그램 인터넷 기본 보안 : ip , port 최초에 지정된 것과 달라지면 => 해킹으로 기본인정되서 (블러킹 : 단절)처리됨 이것을 CORS 보안이라고 한다. 속성 특징 @Configuration 자바클래스에 설정기능을 부여하는 어노테이션 allowedOrigins 허용할 URI 설정 allowedMethods 허용할 메서드 방식 기본 cors 설정 @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.add..
Hard Delete 실제 데이터를 삭제하는 행위 Soft Delete 물리적인 데이터를 삭제로 발생할 수 있는 문제를 방지하고 쉽게 복원할 필요가 있거나 삭제된 데이터들을 보관하여 데이터로써 활용할 필요나 가치가 있는 경우에 사용 실무에서는 법적으로 개인자료일 경우 3년 또는 1년이상 데이터를 보관할 의무가 있고 어길수 법적 문제가 생길 수 있음 => 그래서 soft delete 방식을 대부분 구현하고 있음 Jpa 에서는 이런것을 쉽게 구현할수 있게 만듦 // soft delete // TODO: 사용법 : 1) @Where(clause = "DELETE_YN = 'N'") : select 될때 조건을 강제롤 붙여줌 // 2) @SQLDelete(sql="대체sql 문") : delete 될때 대체해서..
JPA 관계 설정 JPA 에서 조인이란? @(어노테이션)을 이용해서 조인한다. ( 자동 FK , 컬럼 생성 ) 관계를 보자 부모 - 자식 관계 : 1 : N(다) - @OneToMany(부서) , @ManyToOne(사원) (부서) (사원) 1 : 1 - @OneToOne(핸드폰) , @OneToOne(사람) N : N - @ManyToMany (x) 1 : 1 관계 @OneToOne 1 대 1 관계에서는 부모 자식 역할을 아무나 하면 된다. 예제 사람 : 부모 핸드폰 : 자식 Person @Entity // JPA 기능을 클래스에 부여하는 어노테이션 @Table(name = "TB_PERSON") // 테이블 명 지정 // JPA 어노테이션 SQL 문 자동 생성시 NULL 값 컬럼은 제외하고 생성하는 ..
JPA 관계 설정 JPA 에서 조인이란? @(어노테이션)을 이용해서 조인한다. ( 자동 FK , 컬럼 생성 ) 관계를 보자 부모 - 자식 관계 : 1 : N(다) - @OneToMany(부서) , @ManyToOne(사원) (부서) (사원) 1 : 1 - @OneToOne(핸드폰) , @OneToOne(사람) N : N - @ManyToMany (x) 양방향 조인이란? 부서와 사원을 예를 들면 두 테이블이 서로 바라보는 (조인이된) 형태를 말한다. ( N + 1 문제 발생 ) @OneToMany (부서) @ManyToOne (사원) 단방향 조인이란? ( 추천 형태 ) 두 개의 테이블 중 하나의 테이블만 다른 테이블을 바라보는 형태를 말한다. (부서) @ManyToOne(사원) 따라서 1 : N 관계를 추..
알아볼 인터페이스 두개 인터페이스 특징 Pageable (매개변수) 요청 페이징 객체 Page (리턴값) 결과 페이징 객체 두가지 버전이 있다 쿼리 메소드를 사용한 예제와 @Query 를 사용한 예제 쿼리 메소드를 사용한 예제 1번 import EmpRepository ( 사원 레파지토리 ) // 1) 쿼리 메소드 : 함수명으로 sql 문 실행하기 // 1-1) Ename Like 검색 public Page findAllByEnameContaining(String ename , Pageable pageable) { Page page = empRepository.findAllByEnameContaining(ename ,pageable); return page; } EmpService public..
JPA의 라이브러리 중 개발자가 직접 SQL을 작성하는 기능으로는 쿼리메소드 @Query 두가지가 있다. 공식문서 https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods 먼저 쿼리메소드부터 알아보자 쿼리메소드란? 간단하게 함수이름으로 SQL문 만들기이다. 단점으로는 함수 이름이 엄청 길다. ※중요 규칙대로 낙타 표기법으로 만들어야한다. ( 한글자라도 잘못 입력하면 서버가 죽는다. ) 엔티티의 이름은 생략이 가능합니다. find + (엔티티 이름) + By + 변수 이름 예시 findAllByOrderByDnoDesc 란? ( 전체조회 + Dno라는 컬럼으로 내림차순 ) ( SQL 문 : SELECT * FR..
Repository JPA 레파지토리 인터페이스 DB 접속 함수들이 있음 ( CRUD 함수들 ) ( * 예시 * ) @Repository // @Repository - 클래스 위에 붙이고 , 스프링 서버가 실행될때 자동으로 객체 1개를 만들어줌 (IOC) // TODO : 인터페이스명 extends JpaRepository public interface DeptRepository extends JpaRepository { } 속성 특징 @Repository 이것은 Repository 여! ( 인터페이스명 extends ) JpaRepository 뭐 여러가지 있다만.. CRUD 함수 ( Interface CrudRepository ) ( count, del..
Entity class 예시 @Entity // JPA 기능을 클래스에 부여하는 어노테이션 @Table(name = "TB_DEPT") // 테이블 명 지정 // JPA 어노테이션 SQL 문 자동 생성시 NULL 값 컬럼은 제외하고 생성하는 어노테이션 @DynamicInsert @DynamicUpdate @SequenceGenerator( // 시퀀스 설정 name = "SQ_DEPT_GENERATOR" // 시퀀스 함수이름 , sequenceName = "SQ_DEPT" // DB에 생성된 시퀀스 이름 , initialValue = 1 // 시작값 , allocationSize = 1 // JPA에서 관리용 숫자(성능지표) : 그냥 1 넣어주면 됨 ) // 밑에는 기본 lombok 어노테이션 들 @Ge..
BaseTimeEntity JPA에서 자동으로 생성일자 , 수정일자를 만들어 주는 추상 클래스 @MappedSuperclass @EntityListeners 자동으로 생성일자 / 수정일자 컬럼을 sql문에 추가시키는 어노테이션 @Getter // TODO : 자동을 생성일자 / 수정일자 컬럼을 sql 문에 추가시키는 어노테이션 2개 @MappedSuperclass @EntityListeners(AuditingEntityListener.class) public abstract class BaseTimeEntity { // TODO : 단점 // TODO: 공통속성 : yyyy-MM-dd HH:mm:ss 이 패턴이 아닌 기본 패턴으로 보임 private String insertTime; private Str..
JPA 란? ORM (Object - Relational Mapping) 프레임 워크 build.gradle 사용 // logback , log4jdbc 설정 implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16' implementation 'ch.qos.logback:logback-classic:1.2.11' implementation 'org.slf4j:slf4j-api:1.7.36' implementation 'org.slf4j:jcl-over-slf4j:1.7.36' //TODO: Jpa 라이브러리 implementation 'org.springframework.boot:spring-boot-starter-data-jpa' a..
별이춤추는밤
'SpringBoot/JPA' 카테고리의 글 목록