전체 글 71

[Error] JPA 테이블 생성 중 ORDER 테이블 : drop table if exists [*]order CASCADE 오류

Spring 2.7.15 에서 H2 db 사용 중 JPA가 "ORDER"테이블 생성만 실패 spring: h2: console: enabled: true path: /h2 datasource: url: jdbc:h2:mem:test jpa: hibernate: ddl-auto: create # (1) 스키마 자동 생성 show-sql: true # (2) SQL 쿼리 출력 대충 sql에서 drop도 안되고, 나중에 가면 alter도 안되고,, 여튼 테이블 생성부터 문제가 있는 상황 org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "drop table if exists order CASCADE " via JDBC S..

Spring Testing 개념 1/3 #Day13

기능테스트 : (제3자) 사용자 입장에서 전체 기능 테스트 통합테스트(전체테스트) : (개발팀) 클라이언트 측 툴 없이 테스트 코드로 진행하며, controller 부터 db까지 여러 계층이 연관되어 있음. 운영환경과 동일한 조건에서 테스트 @SpringBootTest 슬라이스 테스트(부분통합테스트) : (개발자) 애플리케이션을 특정계층으로 쪼개어 진행, Mock 객체를 사용해서 계층을 끊어서 테스트 범위 좁힐 수 있음 단위테스트(Unit Test) : (개발자) 테스트 해야할 부분만 테스트. 일반적으로 메서드 단위. 최대한 독립적이고, 작은 단위인 것이 좋음 단위테스트 원칙 : F.I.R.S.T Fast(빠르게) Independent(독립적으로, 실행순서 상관없이) Repeatable(반복가능하도록) ..

(review2) Spring 구성하기(Controller - Serivce - Repository) #Day12

spring으로 prj 시작 시 구성 순서 1. 프로젝트 생성 H2는 필요없으면 제거 사용시 application.yml 설정 필요 H2(메모리DB) 웹 콘솔: http://localhost:8080/h2 Mapper 는 필요 시 추가 객체를 JSON 포맷으로 변환 : Gson 뷰 구현 시 타임리프 추가 dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-web' co..

Spring Transaction #Day11

트랜젝션 : 여러 개의 작업들을 하나의 그룹으로 묶어서 처리하는 처리 단위 전부 성공하든가 전부 실패하든가(All or Nothing) ACID 원칙 원자성(Atomicity) : 더이상 쪼갤 수 없음. 논리적으로 하나의 작업으로 인식해서 둘 다 성공하든가 둘 다 실패하든가**(All or Nothing)** 일관성(Consistency) : 비즈니스 로직에서 의도하는 대로 일관성 있게 동작 격리성(Isolation) : 여러개의 트랜젝션은 각각 독립적으로 실행. 즉 다른 트랜젝션에 영향을 주지 않아야함 지속성(Durability) : 트랜젝션이 완료되면 그 결과는 지속되어야 함 커밋(commit)과 롤백(rollback) 커밋(=반영한다) : 하나의 트랜젝션 종료 롤백 : 트랜젝션 내에서 수행된 작업 ..

Spring Data JPA #Day10

Spring Data JPA JPA : Java 에서 RDB를 사용하기 위해 정해 놓은 표준 스펙(명세) Hibernate ORM : JPA 구현체. 실제 사용하는 API Spring Data JPA : Hibernate ORM을 Spring에서 더 쉽게 사용할 수 있도록 해주는 모듈 java-rdb (ORM) 매핑하기 : @Entity (@Column @Id 등 관계설정) Repository 인터페이스 구현 기본 메서드(CRUD 등)은 Spring data JPA에서 기본으로 제공 extends JpaRepository 커스텀 메서드(쿼리)만 인터페이스 내에 작성 → 쿼리는 jpa에서 변경해줌 JPQL 객체 지향 쿼리 사용 : 엔티티 클래스의 객체를 대상으로 객체를 조회 → 쿼리 처리는 jpa에서 함 ..

Spring Persistence(DataAccess) Layer : JPA 예제(ORM : 엔티티 간 관계) 3/3 #Day9

ORM(Object Relationa Mapping) : 자바와 RDB 간에 매핑을 위해 관계 설정이 필요 1. 객체와 테이블 간의 매핑 2. 기본키 매핑 3. 필드(멤버 변수)와 열 간의 매핑 4. 엔티티 간의 연관 관계 매핑 등 1. 객체(entity)와 테이블(table) 간의 매핑 (필수 class 앞) @Entity : JPA 관리 대상 엔티티 명시 (옵션 class 앞) @Table(name="name") : 엔티티와 매핑할 테이블 설정(default : 클래스이름 = 테이블이름) (필수 field 앞) @Id : 식별자 역할을 하는 필드(멤버 변수) (권고 field 앞) @GeneratedValue(strategy = GenerationType.IDENTITY) : PK 생성 전략 기본 생..