DB/JPA

·DB/JPA
JPQLJPA 표준 문법JPA Criteria - java문법으로 쿼리를 작성할 수 있게 함QueryDSL - java문법으로 쿼리를 작성할 수 있게 함네이티브 SQL특정 DB에 종속적인 문법을 작성해야 할 때JDBC API 직접 사용, MyBatis, SpringJdbcTemplate 함께 사용 가능  JPQL모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능하기 때문에 애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL을 필요로 한다.그래서 JPA에서는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공해준다.JPQL은 SQL과 유사하지만, 엔티티 객체를 대상으로 쿼리를 작성한다.  조회TypeQuery query1 = em.creteQuery("SELEC..
·DB/JPA
엔티티 타입@Entity로 정의하는 객체 (Member)데이터가 변해도 식별자로 지속해서 추적 가능ex) 회원 엔티티의 키나 나이 값을 변경래도 식별자로 인식 가능값 타입int, Integer 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체식별자가 없고 값만 있으므로 변경시 추적이 불가능ex) 숫자 100을 200으로 바꾸면 추적 불가능  기본 값 타입자바 기본 타입 (int,long), 래퍼 클래스 (Integer, Long),  String생명주기를 엔티티에 의존회원을 삭제하면 이름, 나이 필드도 함께 삭제값 타입은 공유하면 안된다. - 회원 이름 변경시 다른 회원의 이름도 변경되면 안됌int a = 10; int b = a; 깊은 복사Integer, String은 얕은 복사이지만, 값이 1번 ..
·DB/JPA
영속성 전이 (CASCADE)특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영토 상태로 만들고 싶을 때 사용ex) Team객체를 만들고 memberList를 세팅한 뒤, Team만 persist하면 Member까지 모두 저장 주의 사항영속성 전이는 연관관계 매핑과 관련이 없다. (혼동 불가)단지! 엔티티 영속 편의 옵션일뿐이다.하나의 부모만 자식을 관리할 때 | 소유자가 1개 일 때 | 단일 종속 (다른 곳에서 참조 X)단일 소유자 AND 라이프 사이클 동일게시판, 게시글의 첨부파일 등종류 CascadeType.ALL : 모두 적용PERSIST: 영속REMOVE: 삭제 MERGEREFRESHDETACH     고아 객체부모 엔티티와 연관 관계가 끊어진 자식 엔티티고아 객체 제거orphanRem..
·DB/JPA
Member와 Team에 연관 관계가 있다고 가정할 떄,1. 비지니스 로직에서 Member만 자주 쓰이는 경우 Member를 가져올 때, Team까지 조인해서 가져와야  할까? 지연 로딩을 사용해서, Team을 프록시 객체로 가져올 수 있다.fetch = FetchType.LAZY@Entitypublic class Member { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "member_id") private Long id; private String username; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "team_id") ..
동그리담
'DB/JPA' 카테고리의 글 목록