엔티티 타입(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를 이용하..
new MongoDB와 GeoJSON을 이용하여 근접 위치 확인하기 MongoDB는 NoSQL로 key-value 형태의 BSON(Binary JSON)으로 되어있습니다. ( 스키마가 없어요! ) 데이터 저장 형식이 자유로워 MongoDB와 GeoJSON을 이용하면 두 지점간의 거리를 구하거나, 한 지점에서 부터의 일정 반경까지의 거리 계산을 쉽게 할 수 있습니다. geoJSON이란 위치 정보를 JSON형태로 만든 정보 입니다. 참고 : http://geojson.org/ GeoJSON 객체는 { type: 타입, coordinates: [ 경도, 위도 ] } 형식으로 표현됩니다. 타입에는 Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPo..
오랜만에 포스팅이네요 MySql에서 테이블이 깨졌을 시 복구 법 입니다.테이블이 깨지게 되면 DB 테이블이 갑자기 Select 가 안되고 Select 시 아래와 같은 에러가 발생합니다. ........is marked as crashed and should be repaird. 테이블이 깨지는 원인은 보통 다음과 같습니다. 1. 하드디스크의 용량 부족2. 서버의 다운3. 하드디스크 오류4. 기타 MySQL 자체의 일시적인 오류 등 해결 방안으로는 MySQL 콘솔에 접속하여 repair작업을 진행해 주면됩니다. MySQL서버 계정에 접속 한 뒤 아래와 같이 복구 합니다. ( 테이블이 깨졌을 경우, MySQL 소켓 접속도 안되는 경우가 있습니다. 이때는 /etc/my.cnf 에 소켓 경로를 확인해주시고 재 ..
- Total
- Today
- Yesterday
- HTTPS
- entitymanager
- jpa 값타입
- spring boot 2.1
- springboot
- exception종류
- entityfactory
- plugin
- nginx
- SSL
- spring boot
- Spring
- spring jpa
- JPA란
- https 동시사용
- 프록시 설정
- JPA
- 의존성 사이클
- 자바 가상머신
- HTTP
- 엔진엑스
- angular2
- spring boot http
- AJP
- 플러그인
- spring boot 포트
- tomcat Ajp
- JPA 엔티티
- JPA 영속성관리
- entity type
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |