BackEnd/JPA24 [JPA] 객체지향 쿼리 언어1 - 기본 문법(2) 공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다. 조인//내부 조인SELECT m FROM Member m [INNER] JOIN m.team t//외부 조인SELECT m FROM Member m LEFT [OUTER] JOIN m.team t//세타 조인select count(m) from Member m, Team t where m.username = t.name 내부 조인 예시코드Team team = new Team();team.setName("teamA");em.persist(team);Member member = new Member();member.setUsername("member");member.setAge(10);member.setTeam(team);em.persist(.. 2024. 7. 20. [JPA] 객체지향 쿼리 언어1 - 기본 문법(1) 공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다. 소개JPQL 소개- 가장 단순한 조회 방법이다.EntityManager.fin()객체 그래프 탐색(a.getB(). getC())- JPA를 사용하면 엔티티 객체를 중심으로 개발하게 된다.- 그러나 검색 쿼리를 작성할 때 문제가 발생한다.- 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색해야 한다.- 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능하다.- 애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL이 필요하다.- JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공한다.- JPQL은 SQL과 문법이 유사하며, SELECT, FROM, WHERE, GROUP BY, .. 2024. 7. 19. [JPA] 값 타입(2) 공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다. 값 타입의 비교값 타입은 인스턴스가 달라도 그 안에 값이 같으면 같은 것으로 봐야 한다.//값 타입int a = 10;int b = 10;System.out.println("a == b " + (a == b)); //true//임베디드 타입Address address1 = new Address("city", "street", "10000");Address address2 = new Address("city", "street", "10000");System.out.println("address1 == address2 " + (address1 == address2)); //false- int는 기본 값 타입으로 실제 값 자체를 저장한다. a.. 2024. 7. 18. [JPA] 값 타입(1) 공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다. 기본값 타입JPA는 데이터 타입을 크게 2가지로 분류한다.1. 엔티티 타입- @Entity로 정의하는 객체이다.- 데이터가 변해도 식별자로 지속해서 추적 가능하다.- 예를 들어, 회원 엔티티의 키나 나이 값이 변경되어도 식별자로 인식할 수 있다. 2. 값 타입- int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체를 말한다.- 식별자가 없고 값만 있으므로 변경 시 추적이 불가능하다.- 예를 들어, 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체된다. 2-1. 값 타입 분류- 기본값 타입자바 기본 타입(int, double)래퍼 클레스(Integer, Long)String- 임베디드 타입(em.. 2024. 7. 17. [JPA] 영속성 전이와 고아 객체 공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다. 영속성 전이 영속성 전이:CASCADE- 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들기 위해 사용된다.- ex) 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장한다. 우선 영속성 전이가 아닌 예를 보자.@Entitypublic class Parent { @Id @GeneratedValue private Long id; private String name; @OneToMany(mappedBy = "parent") private List childList = new ArrayList(); public void addChild(Child child) { chil.. 2024. 7. 16. [JPA] 프록시와 연관관계 관리 공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다. 프록시Member를 조회할 때 Team도 함께 조회해야 할까?public void printUserAndTeam(String memberId) { Member member = em.find(Member.class, memberId); Team team = member.getTeam(); System.out.println("회원 이름: " + member.getUsername()); System.out.println("소속팀: " + team.getName());}- 위 코드는 DB를 Member를 조회할 때 Team도 같이 조회된다. 둘 다 가져오는 것을 의도를 한 것이라면 괜찮다. 다음 코드를 보자.pub.. 2024. 7. 16. 이전 1 2 3 4 다음