엔티티 타입(Entity Type)과 값 타입(Value Type)의 특징은 다음과 같다. 엔티티 타입의 특징 식별자(@Id)가 있다. 엔티티 타입은 식별자가 있고 식별자로 구분 할 수 있다. 생명 주기가 있다. 생성하고, 영속화 하고, 소멸하는 생명 주기가 있다. em.persist(entity)로 영속화 한다. em.remove(entity)로 제거한다. 공유할 수 있다. 참조 값을 공유할 수 있다. 이것을 공유 참조라 한다. 값 타입의 특징 식별자가 없다. 생명 주기를 엔티티에 의존한다. 스스로 생명 주기를 가지지 않고 엔티티에 의존한다. 의존하는 엔티티를 제거하면 같이 제거된다. 공유하지 않는 것이 안전하다. 엔티티 타입과는 다르게 공유하지 않는 것이 안전하다. 대신 값을 복사해서 사용해야 한다...
다룰 내용은 다음과 같다. 프록시워 즉시로딩, 지연로딩 : 객체는 객체 그래프로 연관된 객체를 탐색한다. 그런데 객체가 데이터베이스에 저장되어 있으므로 연관된 객체를 마음껏 탐색하기는 어렵다. JPA 구현체들은 이 문제를 해결하려고 프록시라는 기술을 사용한다. 프록시를 사용하면 실제 사용하는 시점에 데이터베이스에서 조회할 수 있다. 하지만 자주 함께 사용하는 객체들은 조인을 사용해서 함께 조회하는 것이 효과적이다. JPA는 즉시 로딩과 지연 로딩이라는 방법으로 둘을 모두 지원한다. 영속성 전이와 고아 객체 : JPA는 연관된 객체를 함께 저장하거나 함께 삭제할 수있게 영속성 전이와 고아 객체 제거라는 편리한 기능을 제공한다. 8.1 프록시 JPA는 엔티티가 실제 사용될 떄까지 데이터베이스 조회를 지연하는..
4.1 @Entity JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여야 한다. @Entity가 붙은 클래스는 JPA가 관리하는 것으로, 엔티티라 부른다. (name 속성 정의하지 않을 시 클래스 이름 그대로 사용 됨) @Entity 적용 시 주의 사항은 다음과 같다. 기본 생성자는 필수 (파라미터가 없는 public 또는 protected 생성자) final 클래스, enum, interface, inner 클래스에는 사용할 수 없다. 저장할 필드에 final을 사용하면 안된다. JPA가 엔티티 객체를 생성할 때 기본 생성자를 사용하므로 이 생성자는 반드시 있어야 한다. 자바는 생성자가 하나도 없으면 다음과 같은 기본 생성자를 자동으로 만든다. public Member(..
3.1 엔티티 매니저 팩토리와 엔티티 메니저 엔티티 매니저 팩토리 : 엔티티 매니저를 만드는 공장. 공장을 만드는 비용이 상당히 크기에 한개만 만들어서 애플리 케이션 전체에 공유하도록 설계됨. 반면에 공장에서 앤티티 매니저를 생성하는 비용은 거의 들지 않음 엔티티 매니저 팩토리는 여러 스레드가 동시에 접근해도 안전하므로 서로 다른 스레드 간에 공유해도 되지만, 엔티티 매니저는 여러 스레드가 동시에 접근하면 동시성 문제가 발생하므로 스레드 간에 절대 공유하면 안된다. EntityManagerFactory에서 다수의 엔티티 매니저를 생성 엔티티 매니저는 데이터 베이스 연결이 꼭 필요한 시점 까지 커넥션을 얻지 않는다. 예를 들어 트랜잭션을 시작할 때 커넥션을 획득한다. EntityManager2는 커넥션을 ..
1.1 SQL을 직접 다룰 때 발생하는 문제점 자바로 작성한 애플리케이션은 JDBC API를 이용해서 SQL을 데이터 베이스에 전달한다. 데이터 베이스는 객체구조와는 다른 데이터 중심의 구조를 가지므로 개발자가 객체 지향 애플리케이션과 데이터 베이스 중간에서 SQL과 JDBC API를 이용해서 변환 작업을 직접 해주어야 한다. 문제는 객체를 데이터베이스에 CRUD하려면 너무 많은 SQL과 JDBC API 코드로 작성해야 한다는 점이다. 그리고 테이블 마다 이런 비슷한 일을 반복해야 한다. 애플리케이션에서 SQL을 직접 다룰 때 발생하는 문제점을 요약하면 다음과 같다. 진정한 의미의 계층 분할이 어렵다. 엔티티를 신뢰할 수 없다. SQL에 의존적인 개발을 피하기 어렵다. JPA와 문제 해결 JPA를 이용하..
- Total
- Today
- Yesterday
- entity type
- SSL
- 자바 가상머신
- entitymanager
- HTTPS
- JPA 영속성관리
- 엔진엑스
- HTTP
- JPA 엔티티
- angular2
- spring boot 2.1
- JPA
- jpa 값타입
- 플러그인
- spring boot http
- entityfactory
- tomcat Ajp
- 프록시 설정
- 의존성 사이클
- spring boot
- JPA란
- springboot
- nginx
- https 동시사용
- plugin
- spring jpa
- spring boot 포트
- AJP
- Spring
- exception종류
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |