일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 프로젝트생성
- calendar
- jQuery값전달
- 페이징
- joinfetch
- JPQL
- Hibernate
- javaservlet
- jscalendar
- 대량쿼리
- fullcalendar
- jQueryUI
- 페치조인
- Generic
- javascriptcalendar
- paging
- 벌크연산
- 제너릭
- 스프링데이터흐름
- JQuery
- fetchjoin
- LIST
- 엔티티직접사용
- springflow
- JPA
- 제네릭
- jQuery값전송
- values()
- 자바서블릿
- namedQuery
- Today
- Total
목록JPA (7)
가자공부하러!
1. 엔티티 직접 사용 1.1. 기본 키 값 - JPQL에서 엔티티를 직접 사용하면 SQL에서 해당 엔티티의 기본 키 값을 사용한다. > 예) JPQL : select count(m) from Member m - 수행되는 쿼리 : select count(m.id) as cnt from Member m - 다음 JPQL도 수행되는 쿼리는 위와 같음 : select count(m.id) from Member m 1.2. 외래키 값 - 연관관계 매핑된 다른 엔티티를 쿼리의 파라미터로 사용할 수 있다. //@ManyToOne @JoinColumn(name = "TEAM_ID) private Team team; em.createQuery("select m from Member m where m.team = :te..
예제 : https://github.com/HyeongJunMin/SpringBootOnmacOS/tree/master/ex2-jpql-jpa 1. 경로표현식 1.1. .(점)을 찍어 객체 그래프를 탐색하는 것 - 상태 필드 : 단순히 값을 저장하기 위한 필드 > 경로 탐색의 끝, 더 이상 탐색이 불가능 - 단일 값 연관 필드 : 엔티티와의 연관관계를 위한 필드 > 묵시적 내부 조인이 발생하고 추가적인 탐색 가능 > 묵시적 내부 조인은 성능튜닝에 많은 영향을 주기 때문에 사용하지 않는것이 좋다 > 예) select m.team.name From Member m - 이 때 m.team까지 단일 값 연관필드이고 m.team.name은 상태필드이다. - 실제 쿼리 : select t.id, t.name fro..
1. JPQL(Java Persistence Query Language) 1.1. 등장배경 - JPA를 사용하면 엔티티 객체를 중심으로 개발을 하게됨 - 검색할 때 마다 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능 - 필요한 데이터만 불러오려면 검색 조건이 포함된 SQL이 필요 1.2. 특징 - SQL을 추상화한 쿼리 언어이며, SQL이 지원하는 키워드는 모두 지원 - JPQL은 엔티티 객체를 대상으로 쿼리 수행(SQL은 DB 테이블 대상) - JPQL은 SQL을 추상화해서 특정 데이터베이스 SQL에 의존하지 않는다. - JPQL은 결국 SQL로 변환된다. 1.3. 사용방법과 예제 - 기초 사용법 > 엔티티와 속성은 대소문자 구분, JPQL 키워드(select, FROM, ...)는 대소문자..
1. 문제점 > 객체를 테이블에 맞추어 데이터 중심으로 모델링하면, 협력 관계를 만들 수 없다. - 테이블은 외래 키로 조인을 사용해서 연관된 테이블을 찾는다. - 객체는 참조를 사용해서 연관된 객체를 찾는다. 2. 단방향 연관관계 > 단방향 매핑으로 끝내는게 베스트 - 단방향 매핑만으로도 이미 연관관계 매핑은 완료된 것이기 때문 > 객체 지향 모델링 - Member가 필드로 Team타입의 변수를 가짐 - @ManyToOne, @JoinColumn(name = "TEAM_ID") 3. 양방향 연관관계 > FK로 엮인 DB 테이블 끼리는 JOIN을 통해 서로의 데이터를 쉽게 조회할 수 있다. > Entity가 테이블처럼 동작하기 위해서는 별도의 작업이 필요하다. > 객체는 가급적 단반향 연관관계를 갖게끔 ..
1. 엔티티 매핑 종류 > 객체와 테이블 매핑 : @Entity, @Table > 필드와 컬럼 매핑 : @Column > 기본 키 매핑 : @Id > 연관관계 매핑 : @ManyToOne, @JoinColumn 2. 객체와 테이블 매핑 > @Entity - NoArgs 생성자 필수 - final 클래스, enum, interface, inner 클래스 불가 - 필드에 final 불가 > @Table(name = "DB테이블이름", catalog = "", schema = "", uniqueConstraints = "") 3. DB스키마 자동 생성 > 애플리케이션 실행 시점에 테이블을 만들 수 있음 > 데이터베이스 방언을 활용해서 데이터베이스에 맞는 적절한 DDL 생성 > 방법 : persistence.x..
em : EntityManager tx : EntityTransaction 1. JPA에서 가장 중요한 2가지 > 객체와 RDB 매핑 설계(정적) > 영속성 컨텍스트 : 실제 JPA가 내부에서 어떻게 동작하는가에 대한 내용 2. 영속성 컨텍스트란? > 엔티티를 영구 저장하는 환경 이라는 뜻 > 영속성 컨텍스트는 눈에 보이지 않기 때문에 엔티티 매니저를 통해서 영속성 컨텍스트에 접근(엔티티 매니저마다 1:1로 존재) > 엔티티의 생명주기 - 비영속(new) : @Entity 객체만 생성되어있는 상태 - 영속(managed) : 영속성 컨텍스트에 관리되는 상태 (em.persist(객체); 등의 코드를 통해) - 준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태 - 삭제(removed)..
소스코드 : https://github.com/HyeongJunMin/SpringBootOnmacOS/tree/master/ex1-hello-jpa **주의 : EntityManagerFactory는 애플리케이션 전체에 하나만 생성해서 공유. **주의 : EntityManager는 쓰레드간 공유하면 안됨 **주의 : JPA의 모든 데이터 변경은 트랜잭션 안에서 실행해야 함 1. 개발환경 > Mac OS > H2 DB (http://h2database.com/html/main.html) - 장점 : 웹용 쿼리툴 제공, 시퀀스/AutoIncrement 모두 지원 - 설치 : 압축풀고 bin에 h2.sh 실행(터미널에서 권한주고 ./h2.sh) - 브라우저콘솔에서 접속 안될 때 : JDBC URL 란에 jdb..