일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준
- pypy3
- popleft
- mvc
- LCM
- DP
- unity
- 그리디 알고리즘
- appendleft
- 1일1솔
- 소수찾기
- 합 구하기
- python3
- 소수판별
- JPA
- 우선순위큐
- deque
- 프로그래머스
- BFS
- C#강의
- 연관관계
- 누적합
- Python
- 인프런
- 파이썬
- 완전탐색
- c#
- 브루투포스
- spring
- Java
- Today
- Total
목록Spring, java (34)
jae_coding

지연로딩 (fetch = FetchType.LAZY) @ManyToOne(fetch=FetchType.LAZY) 엔티티 조회 시 연관관계 필드가 프록시 객체로 제공되며, 지연로딩을 이용하면, 연관관계를 참조하기 전까지는 프록시 객체가 초기화가 되지 않고, 프록시 객체를 참조할 때, 프록시 객체가 초기화되고 SQL이 발생한다. 즉시로딩 (fetch = FetchType.EAGER) @ManyToOne(fetch=FetchType.EAGER) 엔티티 조회 시 연관관계에 있는 데이터를 한번에 조회하는 기능이며, 엔티티의 연관관계 필드에는 실제 엔티티 객체가 반환된다. TIP 1. 가급적 지연 로딩만 사용 (실무) 2. 즉시 로딩을 이용하면 예상하지 못한 SQL이 발생 3. 즉시 로딩은 JPQL에서 N+1 문제..

사전적 의미 컴퓨터 네트워크에서 다른 서버 상의 자원을 찾는 클라이언트로부터 요청을 받아 중계하는 서버를 말한다. 프록시 기초 em.find vs em.getReference 1) em.find(): DB를 통해서 실제 엔티티 객체 조회 2) em.getReference(): DB 조회를 미루는 가짜(프록시) 엔티티 객체 조회 프록시 특징 1) 실제 클래스를 상속 받아서 만들어진다. 2) 실제 클레스와 겉 모양이 동일하다. 3) 사용하는 입장에서 실제 객체인지 프록시 객체인지 구분하지 않고 사용한다. (이론상으로) 4) 프록시 객체는 실제 객체의 참조를 보관한다. 5) 프록시 객체를 호출하면 프록시 객체는 실제 객체의 메소드를 호출한다. 6) 프록시 객체는 처음 사용할 때 한 번만 초기화한다. 이때, 프..

목차 상속관계 매핑 Superclass 1. 상속관계 매핑 RDBMS는 상속관계가 존재하지 않는다. 하지만, DB의 슈퍼타입, 서브타입 관계라는 모델링 기법이 객체의 상속과 유사하다. 예제 슈퍼타입, 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법? 각각의 테이블로 변환 👉 조인 전략 테이블 데이터를 각각 만들어 둔 상태에서 부모 테이블과 자식 테이블을 둘다 insert한 후 join하는 전략이다. 부모 테이블은 구분하는 Column을 둔다. 예를 들어 ITEM의 DTYPE이다. 예제를 똑같이 따라하는 방식으로 진행해 보았다. ALBUM package hellojpa; import javax.persistence.DiscriminatorColumn; import javax.persistence.Di..

목차 연관관계 매핑시 고려사항 다대일 [N:1] 일대다 [1:N] 일대일 [1:1] 다대다 [N:M] 1. 연관관계 매핑시 고려사항 다중성 (DB의 관점에서) 다대일: @ManyToOne (가장많이 사용한다) 일대다: @OneToMany 일대일: @OneToOne 다대다: @ManyToMany (실무에서는 사용하면 안된다) 단방향 매핑 or 양방향 매핑 테이블 외래 키 하나로 양쪽 조인 가능 방향이라는 개념이 존재하지 않음 객체 참조용 필드가 있는 쪽으로만 참조가능 한쪽만 참조하면 단방향 양쪽이 서로 참조하면 양방향 양방향일때, 연관관계의 주인 테이블 외래 키 하나로 두 테이블이 연관관계를 맺음 객체 A와 B 양방향 관계는 A👉B, B👉A 처럼 참조가 2군데임 참조가 2개이니 2개중 테이블의 외래키를 관..

목차 단방향 연관관계 양방향 연관관계와 연관관계의 주인 목표 객체와 테이블 연관관계의 차이에 대한 이해 객체의 참조와 테이블의 외래 키 매핑 방향, 다중성, 연관관계의 주인에 대한 용어 이해 0. 예제 시나리오 회원과 팀이 있다. 회원은 하나의 팀에만 소속될 수 있다. 회원과 팀은 다대일 관계이다. 객체 Diagram 테이블 Diagram 1. 단방향 연관관계 Member Entity package hellojpa; import javax.persistence.*; import java.util.Date; @Entity public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; @Column(name = "u..

목차 객체와 테이블 매핑 DB 스키마 자동 생성 필드와 컬럼 매핑 기본 키 매핑 0. 앤티티 매핑 객체와 테이블 매핑: @Entity, @Table 필드와 컬럼 매핑: @Column 기본 키 매핑: @Id 연관관계 매핑: @ManyToOne, @JoinColumn 1. 객체와 테이블 매핑 @Entity - @Entity가 붙은 클래스는 JPA가 관리하는 엔티티이다. - JPA를 사용해서 테이블과의 매핑할 클래스는 @Entity 어노테이션을 꼭 붙여야한다. - 주의사항 1) 기본 생성자 필수 (parameter가 없는 public or protected 생성자) 2) final class, enum, interface, inner class 에는 사용할 수 없다. 3) 저장할 필드에는 final을 사용할 ..

목차 영속성 컨텍스트 플러시 준영속 상태 1. 영속성 컨텍스트 (JPA를 이해하는데 가장 중요 !) 의미: 엔티티를 영구 저장하는 환경 예시 EntityManager.persist(entity); 이것은 DB에 저장하는 것이 아닌 Entity를 영속성 컨텍스트에 저장하는 것이다. 영속성 컨텍스트는 논리적인 개념이며, 눈에 보이지않는다. 그리고 엔티티 매니저를 통해서 영속성 컨텍스트에 접근할 수 있다. 위와 같이 엔티티 매니저를 통해서 눈에 보이지 않는 영속성 컨텍스트라는 공간에 접근할 수 있게되는 것이다. 엔티티는 생명주기가 있다? • 비영속 (new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 // 비영속 Member member = new Member(); member.setI..

목차 프로젝트 생성 애플리케이션 개발 1. 프로젝트 생성 DB: H2 Database H2Database 설정은 이전 포스팅에 있다. (xml에서 H2db 버전은 맞춰야 한다) IDE: IntelliJ Project: Maven pom.xml 4.0.0 jpa-basic ex1-hello-jpa 1.0.0 org.hibernate hibernate-entitymanager 5.3.10.Final com.h2database h2 2.1.214 javax.xml.bind jaxb-api 2.3.0 18 18 본 프로젝트는 Spring을 이용하지 않기때문에 버전은 크게 상관없다. (xml에서 H2db 버전은 맞춰야 한다) Resouces > META-INF > persistence.xml 대상 바이트코드 변경..

목차 SQL 중심적인 개발의 문제점 JPA 소개 1. SQL 중심적인 개발의 문제점 배경: 21세기는 객체를 관계형 DB에 관리하기때문에 SQL을 중심적으로 개발하였다. 하지만 이는 반복되는 쿼리가 발생한다는 단점이 생긴다. 물론 요즘에는 JDBC 템플릿, 마이바티스 같은 메퍼들이 있기때문에 일이 줄었지만 아직 반복되는 점들이 많이 존재한다. 반복적인 예) CRUD 자바 객체를 SQL로 SQL을 자바객체로 반복해야한다. 관계형 DB를 사용하는 상황에서는 SQL에 의존적인 개발을 피하기는 어렵다. 또한, 객체와 관계형 데이터베이스의 패러다임의 불일치가 존재한다는 단점이 있다. '객체 지향 프로그래밍': 추상화, 캡슐화, 정보은닉, 상속, 다형성 등 시스템의 복잡성을 제어할 수 있는 다양한 장치들을 제공한다..

본 리뷰는 인프런 김영한님의 스프링 MVC 리뷰를 한 포스팅입니다. 스프링 MVC 전체 구조 이전에 버전을 쪼개면서 직접 MVC를 만들어보았는데, 그것과 비교하어 SpringMVC구조를 비교해보겠습니다. 1) 이전에 만들어 둔MVC프레임워크의 구조 2) SpringMVC구조 동작 순서 핸들러 조회: 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회한다. 핸들러 어댑터 조회: 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다. 핸들러 어댑터 실행: 핸들러 어댑터를 실행한다. 핸들러 실행: 핸들러 어댑터가 실제 핸들러를 실행한다. ModelAndView 반환: 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환해서 반환한다. viewResolver 호출: 뷰 리졸버를 찾고..