본문 바로가기
  • 주니어 개발자의
    RESTful 성장기

Database5

데이터베이스 연동 시 유의 사항 개인 프로젝트를 진행하며 데이터베이스를 연동하던 중 겪은 문제를 바탕으로 짧게 글을 쓰고자 한다. 정말 짧으니 주의 1. pom.xml에 dependency를 추가했음에도 데이터베이스 연결이 되지 않는 경우 이 경우, dependencies에 추가한 DB dependency 버전과 로컬 및 서버에서 사용하고자 하는 DB의 버전을 맞춰줘야 한다. 2. java.sql.SQLSyntaxErrorException: Unknown database [DB명] 로그에서 볼 수 있듯이 데이터베이스명을 잘못 등록한 경우 발생하는 예외이다. 나의 경우, spring-master로 DB를 생성했으나 실제 DB명은 spring_master로 생성되어 있음을 알 수 있었다. DB명을 파악하는 방법은 다음과 같다. (MySQL.. 2021. 6. 21.
4-3. Entity 매핑 (3) 1. @Column 객체의 필드를 테이블 컬럼에 매핑한다. name, nullable 속성이 주로 사용된다. 이를 생략하면 기본값이 적용된다. 따라서 자바 기본 타입일 때 nullable 속성에 예외가 존재하게 된다. int와 같은 기본 타입에는 null을 입력할 수 없다. 반면, Integer와 같은 wrapper 클래스 타입에는 null을 입력할 수 있다. 따라서 자바 기본 타입을 DDL로 생성할 때는 not null 제약 조건을 추가하는 것이 안전하다. 다행히 JPA는 이런 상황을 대비해 DDL 생성 기능을 사용할 때 자바 기본 타입에는 not null 제약 조건을 추가한다. @Column의 nullable 속성 값의 default는 true이므로 not null 제약 조건을 기본적으로 추가하지는 .. 2021. 6. 16.
4-2. Entity 매핑 (2) 4. 기본 키 매핑 1. 직접 할당 기본 키를 어플리케이션에서 직접 할당하는 기본 키 매핑 방법이다. 기본 키를 직접 할당하기 위해선 @Id로 매핑한다. @Id @Column(name = "id") private String id; @Id를 적용할 수 있는 자바 타입은 다음과 같다. 1. 자바 기본형 2. 자바 wrapper 클래스 3. String 4. java.util.Date 5. java.sql.Date 6. java.math.BigDecimal 7. java.math.BigInteger 기본 키 직접 할당 전략은 em.persist()로 엔티티를 저장하기 전에 어플리케이션에서 기본 키를 직접 할당한다. Board board = new Board(); board.setId("board1"); em.. 2021. 6. 11.
3-3. Flush와 준영속 1. Flush 플러시는 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영하는 것을 말한다. (영속성 컨텍스트에 보관된 엔티티를 지우는 것이 아님) * 플러시 실행 과정 1. 변경 감지가 동작, 영속성 컨텍스트에 있는 모든 Entity 스냅샷과 비교해 수정된 Entity를 찾는다. 수정된 Entity는 수정 쿼리를 만들어 쓰기 지연 SQL 저장소에 등록한다. 2. 쓰기 지연 SQL 저장소의 쿼리를 DB에 전송한다. * 플러시 방법 1. em.flush()를 직접 호출 테스트나 다른 프레임워크와 JPA를 함께 사용할 때를 제외하고 거의 사용하지 않음. 2. 트랜잭션 커밋 시 플러시 자동 호출 DB에 변경 내용을 SQL로 전달하지 않고 트랜잭션만 커밋하면 어떤 데이터도 DB에 반영되지 않는다. 그렇기에 트랜.. 2021. 6. 7.
2. JPA 설정 및 어플리케이션 개발 여의도에 들려 IFC Mall에서 멕시코 음식과 함께 아주 만족스러운 저녁 식사를 마치고 귀가해 작성하는 게시글이다. 오늘부터는 본격적으로 JPA를 사용해 개발을 하기 위한 설정과 원리?를 알아보고자 한다. 1. persistence.xml 설정 JPA는 persistence.xml 파일을 통해 필요한 설정 정보를 관리한다. META-INF/persistence.xml 클래스 패스 경로에 있다면 별도의 설정 없이 JPA가 인식할 수 있다. 설정 파일은 위와 같이 persistence로 시작한다. 여기서 xml 네임스페이스(xmlns)와 버전을 지정한다. 영속성 유닛 (persistence unit)은 일반적으로 연결할 데이터베이스당 하나의 영속성 유닛을 등록한다. 위의 4가지 속성은 JPA 표준 속성으로.. 2021. 5. 24.