2025/06/20 4

[멋사/Mac OS] 5주차 정기 세션 (Part 4. 영속성 전이 ~ Part 6. Auditing)

4. 영속성 전이(1) 영속성 전이- 영속성 전이 : 엔티티의 상태를 변경할 때 해당 엔티티와 연관된 엔티티의 상태 변화를 전파해주는 기능- 부모 엔티티 상태 변경 -> 자식 엔티티 상태 자동 변경 영속성 전이 조건1. 자식 엔티티가 독립적으로 존재하지 않고 부모 엔티티에 완전히 의존적일 때2. 부모가 저장되면 자식도 같이 저장, 부모가 삭제되면 자식도 같이 삭제 (유사한 라이프 사이클)(2) Cascade- Cascade: 부모 엔티티의 상태 변화가 자식 엔티티에도 자동으로 전파 (부모의 생명주기에 자식도 함께 묶음)PERSISTREMOVEMERGEREFRESHALL부모 저장 시 자식 저장부모 삭제 시 자식 삭제부모 변경 시 자식 변경부모 새로고침 시 자식도 새로고침모든 옵션 포함 - 예시 코드@Ent..

[멋사/Mac OS] 5주차 정기 세션 (Part 3. QueryDSL 소개 및 JPQL과 비교)

3. QueryDSL 소개 및 JPQL과 비교(1) JPQL의 단점- 오타나 문법 오류를 컴파일 시에 찾을 수 없음-> 실행 전까지 오류 발견이 불가능-> 개발 중 오류 발견이 어렵고, 실행 중 예외 발생 - 동적 쿼리 작성이 불편-> if문이 많아질수록 가독성이 나빠짐(2) QueryDSL의 장점- 타입 안전성 보장-> 컴파일 시점에 username이 String 타입인지 확인 가능-> 오타가 있으면 바로 에러가 발생하여 실행 전에 오류를 방지 - 동적 쿼리 작성이 간편-> BooleanBuilder를 사용해서 조건을 유동적으로 추가 가능-> if문을 최소화하고 가독성을 높임 JPQLQueryDSL문법문자열 기반코드 기반타입 체크런타임 오류 가능컴파일 시 오류 잡힘동적 쿼리어렵고 복잡유연하고 깔끔ID..

[멋사/Mac OS] 5주차 정기 세션 (Part 2. JPA 쿼리 작성 방법)

2. JPA 쿼리 작성 방법(1) JPQL과 쿼리- JPQL : JPA 전용 객체 지향 쿼리 언어, SQL과 유사하지만 엔티티 중심으로 작성SELECT e FROM EntityName e WHERE e.property = :value -> SQL과 비슷하지만 엔티티 기준으로 작성-> 테이블 이름이 아닌 클래스 이름과 필드명을 사용-> DB 독립적인 쿼리라 이식성이 좋음-> 복잡한 조건도 표현이 가능해서 유연성이 높음 - @Query : JPQL을 써먹을 수 있게 해주는 도구@Query("SELECT m FROM Member m WHERE m.age > :age")List findOlderThan(@Param("age") int age); -> 복잡한 조건, 동적 쿼리, 조인 등 자유도가 높을 때 사용->..

[멋사/Mac OS] 5주차 정기 세션 (Part 1. 실습환경 세팅)

1. 실습환경 세팅(1) DB 생성- likelionmember 데이터베이스 및 member 테이블 생성CREATE TABLES `member` ( id int auto_increment primary key, username varchar(10) not null, age int, university varchar(50));(2) SpringBoot 프로젝트 설정- application.propertiesspring.apllication.name = likelionmemberspring.datasource.driver-class-name = com.mysql.cj.jdbc.Driverspring.datasource.url = ${DB_URL}spring.datasource.usern..