Spring/Spring Data JPA 4

[Spring Data JPA] 4. 엔터티 상태와 Cascade

백기선님 강의 중 Spring Data JPA에 대해서 정리를 해놓은 블로그입니다. 자세한 내용은 강의를 참고해주세요. 강의 링크 Cascade 란? 엔터티의 상태 변화를 전파시키는 옵션입니다. @OneToMany나 @ManyToOne에 옵션으로 줄 수 있는 값입니다. 만약 엔터티의 상태 변화가 있으면 연관되어 있는 엔터티에도 상태 변화를 전이시키는 옵션입니다. Cascade 의 종류 CascadeType.PERSIST 엔티티를 영속화 할 때이 필드에 보유 된 엔티티도 유지합니다. EntityManager가 flush 중에 새로운 엔티티를 참조하는 필드를 찾고이 필드가 CascadeType.PERSIST를 사용하지 않으면 오류이므로이 Cascade 규칙의 자유로운 적용을 제안합니다. CascadeType..

[Spring Data JPA] 3. 엔티티 Value 관계 맵핑

백기선님 강의 중 Spring Data JPA에 대해서 정리를 해놓은 블로그입니다. 자세한 내용은 강의를 참고해주세요. 강의 링크 앤티티 맵핑 @Entity “엔티티”는 객체 세상에서 부르는 이름. 보통 클래스와 같은 이름을 사용하기 때문에 값을 변경하지 않음. 엔티티의 이름은 JQL에서 쓰임. @Table “릴레이션" 세상에서 부르는 이름. @Entity의 이름이 기본값. 테이블의 이름은 SQL에서 쓰임. @Id 엔티티의 주키를 맵핑할 때 사용. 자바의 모든 primitive 타입과 그 랩퍼 타입을 사용할 수 있음 Date랑 BigDecimal, BigInteger도 사용 가능. 복합키를 만드는 맵핑하는 방법도 있지만 그건 논외로.. @GeneratedValue 주키의 생성 방법을 맵핑하는 애노테이션 ..

[Spring Data JPA] 2. ORM 이란? & 패러다임 불일치

백기선님 강의 중 Spring Data JPA에 대해서 정리를 해놓은 블로그입니다. 자세한 내용은 강의를 참고해주세요. 강의 링크 이전 강의에서 진행했던 방식 -> JDBC 방식 try(Connection connection = DriverManager.getConnection(url,username,password)){ System.out.println("Connection created: "+connection); String sql = "INSERT INTO ACCOUNT VALUES(1,'hyeon','pass')"; try(PreparedStatement statement = connection.prepareStatement(sql)){ statement.execute(); } } 도메인 모델 ..

[Spring Data JPA] 1. 관계형 데이터베이스와 자바

백기선님 강의 중 Spring Data JPA에 대해서 정리를 해놓은 블로그입니다. 자세한 내용은 강의를 참고해주세요. 강의 링크 JDBC - (관계형) 데이터베이스와 자바의 연결 고리 - 자바에서 JDBC를 통해서 데이터 베이스에 CRUD 작업을 진행합니다. 이는 데이터를 영속화 해야할 필요가 있기 때문입니다. ※ 애플리케이션을 껏다 켜도, 데이터가 유지되는 속성이 영속성입니다. JDBC DataSource / DriverManager Connection PreparedStatement SQL DDL DML 무엇이 문제인가? SQL을 실행하는 비용이 비싸다. SQL이 데이터베이스 마다 다르다. 스키마를 바꿨더니 코드가 너무 많이 바뀌네 반복적인 코드가 너무 많아. 당장은 필요가 없는데 언제 쓸 줄 모르..