목록Framework (19)
먹었으면 뇌를 쓰자
1. 스프링이란 무엇인가 2. 의존성 주입(DI) 3. 관점 지향 프로그래밍(AOP) 4. Spring MVC 5. Controller 6. Spring data JPA 1. 스프링이란 무엇인가 - EJB를 개선해서 비즈니스 로직 구현에만 집중 - POJO, DI, AOP, PSA - 스프링과 스프링 부트 - Spring for OOP 소프트웨어 생명주기 관리, 보안, 트랜잭션 등등 개발자가 관리해야 할 것이 많았던 EJB(Enterprise JavaBean) 모델을 대체하는 것이 Spring 프레임워크이다. 개발자는 비즈니스 로직 구현에만 집중할 수 있다. 스프링에는 다음과 같은 특징이 있다. 1. POJO(Plain Old Java Object)s 의존성을 최대한 덜어낸 순수 객체를 만든다. 2. D..
1. JPA란 무엇인가 1.1 기본 CRUD 1.2 기초 지식 2. 연관관계 2.1 다대일 연관관계 2.2 일대다 연관관계 3. 상속 3.1 상속관계 3.2 CASCADE 4. SQL 4.1 JPQL 4.2 Querydsl 4.2 Querydsl - JPQL과 Querydsl 차이 - 환경 설정 - 테스트 코드 작성 - SELECT - Join - Paging JPQL은 주로 정적 쿼리를 작성하는 데 쓰인다. 한번 쿼리를 날려두면 일단은 상태를 유지하는 쿼리이다. Querydsl은 동적 쿼리를 작성하는 데 효율적이다. 조건이 달라지면 쿼리가 다르게 생성되어 실행하도록 하는 쿼리이다. 쿼리를 코드로 작성한다. pom.xml에 Querydsl 라이브러리를 추가해준다. (querydsl : JPA용 Query..
1. JPA란 무엇인가 1.1 기본 CRUD 1.2 기초 지식 2. 연관관계 2.1 다대일 연관관계 2.2 일대다 연관관계 3. 상속 3.1 상속관계 3.2 CASCADE 4. SQL 4.1 JPQL 4.2 Querydsl 4. SQL 4.1 JPQL - JPQL은 엔티티 쿼리 - SELECT ... FROM - TypedQuery, Query - JPQL SELECT문에서 가능한 것들 - Join JPQL은 객체 지향 쿼리이다. 테이블이 아닌, 엔티티 객체를 대상으로 한다. (물론 JPQL로 실행한 쿼리도 실행 때는 SQL로 변환된다) JPA에서 제공하는 em.persist 등은 트랜잭션 커밋 시 일괄 전송되지만 JPQL은 쿼리가 작성되면 곧바로 데이터베이스로 전송되어 실행된다. SELECT a FRO..
1. JPA란 무엇인가 1.1 기본 CRUD 1.2 기초 지식 2. 연관관계 2.1 다대일 연관관계 2.2 일대다 연관관계 3. 상속 3.1 상속관계 3.2 CASCADE 4. SQL 4.1 JPQL 4.2 Querydsl 3.2 CASCADE - Cascade 전이 - PERSIST - REMOVE를 주의하라 Cascade는 '전이'라는 뜻이다. 일대다(다대일) 연관관계를 맺은 두 엔티티가 있다. 프로그래머는 일 쪽의 상태가 변화하면, 다 쪽의 상태도 변화하도록 만들고 싶다. 예를 들어 사람Person, 주소Address 가 일대다 연관관계를 맺고 있다고 하자. 사람 엔티티가 존재해야 주소 엔티티가 의미를 가진다. 따라서 사람이 remove되면 연관된 주소들도 remove 되도록 cascade 할 수 ..
1. JPA란 무엇인가 1.1 기본 CRUD 1.2 기초 지식 2. 연관관계 2.1 다대일 연관관계 2.2 일대다 연관관계 3. 상속 3.1 상속관계 3.2 CASCADE 4. SQL 4.1 JPQL 4.2 Querydsl 3. 상속 상속은 자바에서 중요한 개념이다. 엔티티 차원에서도 상속할 수 있을까? RDB에는 상속 개념이 없지만, JPA에서 상속을 구현할 수 있는 전략이 있다. Mapped SuperClass, Table per Class, Single Table, Joined가 그것이다. 이 중에서 실제 유용한 것은 Single Table과 Joined이다. 3.1 상속관계 Publication : 원고, 부모 클래스 Book : 단행본, 자식 클래스1 BlogPost : 포스트, 자식 클래스2 ..
1. JPA란 무엇인가 1.1 기본 CRUD 1.2 기초 지식 2. 연관관계 2.1 다대일 연관관계 2.2 일대다 연관관계 3. 상속 3.1 상속관계 3.2 CASCADE 4. SQL 4.1 JPQL 4.2 Querydsl 2.2 일대다 연관관계 앞서 살펴본 다대일 연관관계(@ManyToOne)은 다 쪽인 Item이 일 쪽인 PurchaseOrder의 FK를 관리하는 관점이었다. 하지만 객체 지향 프로그래밍에서는 일대다 연관관계(@OneToMany)까지 양방향으로 참조하기를 지향한다. 만약 일대다 연관관계의 단방향 참조만 이루어진다면 어떻게 될까? PurchaseOrder 엔티티에서 Item 엔티티로 일대다 단방향 참조만 이루어졌다고 해보자. PurchaseOrder와 Item가 각각 일대다 관계로 연결..
1. JPA란 무엇인가 1.1 기본 CRUD 1.2 기초 지식 2. 연관관계 2.1 다대일 연관관계 2.2 일대다 연관관계 3. 상속 3.1 상속관계 3.2 CASCADE 4. SQL 4.1 JPQL 4.2 Querydsl 2. 연관관계 연관관계에는 4가지 종류가 있다. 일대일(One to One) -> 게시물/게시물 정보 일대다(One to Many) -> 게시물/댓글 다대일(Many to One) -> 댓글/게시물 다대다(Many to Many) -> 게시물/중간 테이블/태그 테이블끼리는 FK를 통해 양방향 연관관계를 설정할 수 있다. 그러나 객체끼리는 참조를 통해 단방향 연관관계를 설정한다. 따라서 객체끼리 양방향 연관관계를 설정하려면 서로 걸어줘야 한다. 객체는 서로 참조를 걸어줘야 연관관계가 형..
1. JPA란 무엇인가 1.1 기본 CRUD 1.2 기초 지식 2. 연관관계 2.1 다대일 연관관계 2.2 일대다 연관관계 3. 상속 3.1 상속관계 3.2 CASCADE 4. SQL 4.1 JPQL 4.2 Querydsl 1.2 기초 지식 - 어노테이션 - 엔티티 어노테이션은 간단히 말해 '이름표'이다. 앞선 예제에서 다음과 같은 어노테이션이 사용되었다. @Entity 해당 클래스가 영속성 컨텍스트에서 관리될 엔티티임을 나타낸다. @Id 해당 필드가 식별자(pk)임을 나타낸다. @Column 해당 필드의 세부 속성을 나타낸다. (name = 필드명, nullable = null값 허용 여부 등) @Id 에서 식별자를 할당하는 방식에는 직접 할당과 자동 생성 두 가지가 있다. 예제에서는 직접 할당 방식을..
1. JPA란 무엇인가 1.1 기본 CRUD 1.2 기초 지식 2. 연관관계 2.1 다대일 연관관계 2.2 일대다 연관관계 3. 상속 3.1 상속관계 3.2 CASCADE 4. SQL 4.1 JPQL 4.2 Querydsl 1.1 기본 CRUD - 실습 환경 준비하기 - 엔티티 작성하기 - CRUD 구현하기 ① 실습에 사용할 RDB는 MySQL, IDE는 인텔리J이다. MySQL - jpa_playground 데이터베이스 생성하고 movie 테이블을 만든다. 인텔리J - maven 빌드툴로 프로젝트를 생성한다. ② 프로젝트의 pom.xml에 RDB/JPA 의존 설정을 추가한다. RDB 라이브러리 - MySQL Connector/J 를 설치한다. JPA 라이브러리 - Hibernate EntityManag..
1. JPA란 무엇인가 1.1 기본 CRUD 1.2 기초 지식 2. 연관관계 2.1 다대일 연관관계 2.2 일대다 연관관계 3. 상속 3.1 상속관계 3.2 CASCADE 4. SQL 4.1 JPQL 4.2 Querydsl 1. JPA란 무엇인가 - JPA는 자바 ORM - JPA의 장점은 무엇일까 - 스프링 데이터 JPA 자바는 객체 지향이지만 데이터베이스는 객체 지향 개념이 없다. ORM(객체 관계 매핑)은 객체 지향 프로그래밍과 관계형 데이터베이스의 간극을 채우는 기술이다. JPA는 자바에서 사용하는 표준 ORM이다. JPA를 파자해보면 다음과 같다. 'Java Persistence API' JPA는 자바가 RDB를 사용하는 방식을 정의하는 인터페이스이다. 인터페이스는 일종의 형식으로, 실제 내용은..