JAVA/JPA27 [JPA] JPA 프록시 정리 ≣ 목차해당 글을 읽기전에 프록시 객체에 대해서 알고 오시는 걸 추천합니다. JPA에서는 왜 프록시 객체를 사용할까??JPA에서는 프록시 객체를 사용하여 객체지향의 장점을 살리면서 관계형 데이터베이스의 성능 문제를 해결합니다. 객체는 연관된 객체들을 자유롭게 탐색하고 조회할 수 있지만, 관계형 데이터베이스에 매핑된 엔티티 객체는 연관된 테이블의 데이터를 조회하기 위해 JOIN을 사용해야 하므로 자유도가 떨어집니다.여기서 '자유도가 떨어진다'는 것은, 객체지향에서는 객체 간의 관계를 통해 쉽게 데이터를 탐색할 수 있지만, 관계형 데이터베이스에서는 연관된 테이블의 데이터를 조회하기 위해 JOIN 쿼리를 작성해야 하기 때문에 자유도가 떨어진다는 의미입니다. 추가적으로, 실제로 연관된 테이블을 사용하지 않는 .. 2024. 11. 14. [Spring + JPA] JPA 상속관계 매핑 ≣ 목차상속관계 매핑관계형 데이터베이스는 상속 관계 기능이 없지만, 슈퍼타입-서브타입 관계를 통해 유사한 개념을 구현할 수 있습니다. 슈퍼타입은 공통 속성(칼럼)을 가진 상위 개념을 나타내고, 서브타입은 슈퍼타입 속성을 공통적으로 가지고 개별적인 속성(칼럼)을 가질 수 있습니다. 예를 들어, '직원'이라는 슈퍼타입이 있을 때, '인사 부서'와 '마케팅 부서'는 각각의 서브타입으로, 서브타입들은 '직원'의 속성을 가지면서 각기 다른 특성을 가질 수 있습니다. 이제부터 슈퍼 타입을 부모 테이블으로 부르고, 서브 타입을 자식 테이블이라고 말하겠습니다. 상속관계 매핑 전략1. 조인전략 - JOINED 조인 전략은 부모 클래스와 자식 클래스 각각에 대해 별도의 테이블을 생성하고, 이들 테이블 간의 관계를 조인.. 2024. 11. 12. [Spring + JPA] Entity 연관 관계 매핑 - 관계 유형 ≣ 목차 연관관계 매핑 시 고려사항 관계 유형관계 유형은 데이터베이스 입장에서 필요한 개념으로 적절한 매핑으로 데이터 무결성과 일관성을 유지할 수 있습니다. 관계 유형에 따라 일대일, 일대다, 다대다와 같은 다양한 방식으로 객체와 테이블 간의 연관성을 정의할 수 있으며, 이는 쿼리 성능, 데이터 접근 방식, 객체 간의 상호작용에 영향을 미칩니다. 그리고 관계 유형에 따라 외래키 관리와 연관관계 주인의 설정이 달라지므로, 잘못 설정할 경우 JPA가 비효율적이거나 작성할 수 있습니다. 단방향/양방향테이블은 외래키 하나로 양쪽에서 조회가 가능하므로 단방향과 양방향으로 구분할 필요가 없습니다. 반면 객체는 참조용 필드가 있는 쪽으로만 조회가 가능해서 한쪽 엔티티에서만 다른 엔티티를 참조하면 단방향, 두 엔티티가.. 2024. 11. 8. [Spring + JPA] JPA 연관관계 정리 #2 - 양방향 매핑 시 주의사항 ≣ 목차양방향 매핑 시 가장 많이하는 실수양방향 연관관계를 설정할 때 아래와 같이 주의해야 하는 점이 있습니다.양방향 연관관계 주인 객체 필드에 값을 설정하지 않는 경우양방향 연관 관계 설정 시 무한 루프를 주의 주인 객체에 필드 값을 설정하지 않는 경우 아래 코드는 Member 객체(테이블)에 주인 필드가 존재하는 상황입니다.tx.begin(); try { Member2 member = new Member2(); member.setUserName("member1"); member.setAge(19); em.persist(member); Team team = new Team(); .. 2024. 11. 7. [Spring + JPA] JPA 연관관계 정리 #1 ≣ 목차DB와 객체에 패러다임 불일치JPA 연관 관계를 알아보기 전에 객체와 데이터베이스 테이블 간의 차이점을 살펴보면, 객체는 참조를 통해 연관된 객체를 찾는 반면, 테이블은 외래 키를 사용하여 연관된 테이블을 찾습니다. 이렇게 객체와 테이블 사이에는 패러다임 불일치가 발생합니다. 객체를 테이블 위주로 구성@Table(name = "Member")@Entitypublic class Member2 { @Column(name = "TEAM_ID") private Long teamId; // 테이블 패러다임에 맞춰서 구성}Team team = new Team();team.setName("TeamA");em.persist(team);Member2 member = new Member2();membe.. 2024. 11. 6. [Spring + JPA] JPA 애노테이션 정리 ≣ 목차테이블 관련@Entity JPA를 사용해서 테이블과 매핑할 클래스를 의미하며, 기본 생성자가 무조건 있어야 됩니다. @Table 속성기능기본값 name 매핑할 테이블 이름 지정 및 매핑객체 이름을 사용 catalog 데이터베이스 catalog 매핑 schema 데이터베이스 schema 매핑 uniqueConstraints DDL 생성 시에 유니크 제약 조건 생성 @Table( name = "table_name", // 매핑할 테이블 이름 변경 catalog = "my_catalog", // 데이터베이스 catalog 매핑 schema = "my_schema", // 데이터베이스 schema 매핑 uniqueConstraints =.. 2024. 11. 3. [JPA] 영속성 컨텍스트 개념 정리 ≣ 목차 영속성 컨텍스트를 알아보기 전에, 엔티티 매니저 팩토리와 엔티티 매니저에 대해 간단히 설명하겠습니다. 엔티티 매니저 팩토리엔티티 매니저 팩토리는 엔티티 매니저 인스턴스를 생성을 담당하는 객체입니다. 애플리케이션의 수명 동안 재사용되며, 애플리케이션이 시작될 때 한 번만 생성하는 것이 좋습니다. 기본적으로 요청마다 새로운 엔티티 매니저를 생성합니다. 엔티티 매니저엔티티 매니저는 데이터베이스와 상호 작용하는 역할을 합니다. 요청이 있을 때마다 새로운 엔티티 매니저 인스턴스가 생성되어 데이터베이스와의 연결을 관리합니다. 이 엔티티 매니저는 내부적으로 데이터베이스 커넥션을 사용하여 다음과 같은 CRUD 작업을 수행합니다. 영속성 컨텍스트(Persistence Context)애플리케이션과 DB 사이.. 2024. 11. 1. 이전 1 2 3 다음