2016-08-31 2 views
0

이의 내가 객체를최대 절전 모드,

class User 
{ 
    int id; 
    String name; 
    String password; 
    List<Property> properties; 
} 

그리고

class Property 
{ 
    int id; 
    String key; 
    String value; 
} 

의 MySQL의 테이블은 그러나 약간 차이가 있다고 가정 해 봅시다 개체에 참조하지 않고 ID를 저장합니다.

CREATE TABLE `user` (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `name` VARCHAR(45), 
    `password` VARCHAR(45), 
    PRIMARY KEY (`id`)); 

내가 사용자 개체가 나는 절약 끝날 저장할지 여부 있도록

CREATE TABLE `property` (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `key` VARCHAR(45) NULL, 
    `value` VARCHAR(45) NULL, 
    `userId` INT NULL, 
    PRIMARY KEY (`id`), 
    CONSTRAINT `userId` 
    FOREIGN KEY (`userId`) 
    REFERENCES `user` (`userId`)); 

어떻게 따라 새 속성을 생성/최대 절전 모드 주석을 만들 것인가?

정말 이런 일이 발생하기 위해 Property 객체 안에 User 객체를 넣고 싶지 않습니다.

+1

'@ ManyToOne'과'@ OneToMany'와'@ ManyToMany'를 읽으십시오. – Jens

+0

@Jens 저는'@ OneToMany'에 대해 읽었습니다. 그러나 내가 본 모든 예제와 설명은 저장을 위해'Property' 객체 안에'User' 객체가 있어야합니다. 'User' 객체를'Property' 객체 안에 넣고 싶지 않습니다. 가능한가요? – Quillion

+1

당신은 일방적 인 관계 선박에 대해 읽어야합니다. 네가 본 것은 쌍방향 상관 관계 선박이야. – Jens

답변

0

당신이 사용하는 단방향 OneToMany 매핑을 달성 할 수 있지만, userIdpropertyId 열이 별도의 테이블을 생성하고 재산 테이블 userId 열 필요가 없습니다. 이 경우 사용자의 모든 속성을 가져올 수 있지만 특정 속성이 어떤 사용자에게 속하는지 쿼리 할 수는 없습니다.

속성 개체에 사용자 정보를 저장하려면 양방향 OneToMany 매핑을 사용해야하며이 경우 사용자를 Property 클래스에 넣어야합니다. 데이터를 가져 오는 동안 속성 클래스 내에서 User 개체 초기화를 제어 할 수 있습니다 User의 가져 오기 유형을 구성하여 데이터베이스에서 가져옵니다. 기본적으로 가져 오기 유형은 LAZY입니다. 즉, 사용자 객체를 사용할 때만 데이터베이스에서 가져옵니다.