일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- jQueryUI
- fullcalendar
- 대량쿼리
- Generic
- joinfetch
- JPA
- calendar
- javascriptcalendar
- 벌크연산
- paging
- 자바서블릿
- Hibernate
- 스프링데이터흐름
- jQuery값전송
- 페이징
- JQuery
- fetchjoin
- JPQL
- 페치조인
- 제네릭
- springflow
- namedQuery
- 엔티티직접사용
- javaservlet
- jQuery값전달
- 프로젝트생성
- jscalendar
- 제너릭
- values()
- LIST
- Today
- Total
목록Hibernate (6)
가자공부하러!
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/xjPtT/btqz3oZ4YS7/HTuFXKiboeZGHwkAI8LzK0/img.png)
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..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bFVxiB/btqz1LPvGtf/BUp2xv0ecaWFVPZ3n67vQ0/img.png)
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, ...)는 대소문자..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cNuZBO/btqz2DDnC5u/2Go2Yjx4otnqoNhzPeVkX0/img.jpg)
1. 문제점 > 객체를 테이블에 맞추어 데이터 중심으로 모델링하면, 협력 관계를 만들 수 없다. - 테이블은 외래 키로 조인을 사용해서 연관된 테이블을 찾는다. - 객체는 참조를 사용해서 연관된 객체를 찾는다. 2. 단방향 연관관계 > 단방향 매핑으로 끝내는게 베스트 - 단방향 매핑만으로도 이미 연관관계 매핑은 완료된 것이기 때문 > 객체 지향 모델링 - Member가 필드로 Team타입의 변수를 가짐 - @ManyToOne, @JoinColumn(name = "TEAM_ID") 3. 양방향 연관관계 > FK로 엮인 DB 테이블 끼리는 JOIN을 통해 서로의 데이터를 쉽게 조회할 수 있다. > Entity가 테이블처럼 동작하기 위해서는 별도의 작업이 필요하다. > 객체는 가급적 단반향 연관관계를 갖게끔 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/brDgF4/btqz3CcG7Wg/hkV41Vpr0bQkGnz2wYTFrk/img.jpg)
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..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/v6OO8/btqz3oeHVMw/SCst3O2Liq3SULm0jEKRqK/img.jpg)
em : EntityManager tx : EntityTransaction 1. JPA에서 가장 중요한 2가지 > 객체와 RDB 매핑 설계(정적) > 영속성 컨텍스트 : 실제 JPA가 내부에서 어떻게 동작하는가에 대한 내용 2. 영속성 컨텍스트란? > 엔티티를 영구 저장하는 환경 이라는 뜻 > 영속성 컨텍스트는 눈에 보이지 않기 때문에 엔티티 매니저를 통해서 영속성 컨텍스트에 접근(엔티티 매니저마다 1:1로 존재) > 엔티티의 생명주기 - 비영속(new) : @Entity 객체만 생성되어있는 상태 - 영속(managed) : 영속성 컨텍스트에 관리되는 상태 (em.persist(객체); 등의 코드를 통해) - 준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태 - 삭제(removed)..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/D57hw/btqz0B7QYwO/UfEHWLJknpbUwIpSl8Fgdk/img.jpg)
소스코드 : 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..