hibenate 의 다 중 관계 설정
9495 단어 hibernate
- - - - 무정 한 분할 선 - - - -
1. 다 중 데이터 베 이 스 는 세 장의 표를 만들어 야 한다. 하 나 는 두 개의 외부 키 의 조합 이 고 두 개의 실체 표, user 표 와 role 표 역할 표를 다시 만들어 야 한다.
CREATE TABLE `sys_role` (
`rid` bigint(20) NOT NULL AUTO_INCREMENT,
`rname` varchar(255) DEFAULT NULL,
PRIMARY KEY (`rid`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
사용자 테이블:
CREATE TABLE `sys_user` (
`uid` bigint(20) NOT NULL AUTO_INCREMENT,
`username` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
다 중 연결 외부 키 시트:
CREATE TABLE `sys_user_role` (
`uid` bigint(20) NOT NULL,
`rid` bigint(20) NOT NULL,
PRIMARY KEY (`uid`,`rid`),
KEY `FK73pkd5v8ckvmrx2grvpg26ks1` (`rid`),
CONSTRAINT `FK73pkd5v8ckvmrx2grvpg26ks1` FOREIGN KEY (`rid`) REFERENCES `sys_role` (`rid`),
CONSTRAINT `FKput17v9wwg8wiukw8ykroaaag` FOREIGN KEY (`uid`) REFERENCES `sys_user` (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
이상 은 단순히 데이터 뱅 크 의 관점 에서 출발 하여 다음은 hibenate 의 다 중 설정 입 니 다. 구분 해 보 세 요. 이것 은 두 시스템 의 측면 에서 볼 수 있 습 니 다.
2. 사용자 와 캐릭터 를 작성 하 는 자바 빈, 사용자 의 자바 빈 코드 는 다음 과 같 습 니 다.
public class User {
private Long user_id;
private String user_code;
private String user_name;
private String user_password;
private String user_state;
private Set roles = new HashSet();
}
캐릭터 의 자바 빈 코드 는 다음 과 같 습 니 다.
public class Role {
private Long role_id;
private String role_name;
private String role_memo;
private Set users = new HashSet();
}
즉, hibenate 의 코드 부분 은 외부 키 로 연결 되 는 것 이 아니 라 자신의 한 측 에서 set 집합 으로 자신 과 관련 된 여러 곳 을 기억 하 는 것 이다.
3. 사용자 와 캐릭터 의 맵 설정 파일 은 다음 과 같 습 니 다.
사용자 맵 설정 파일 은 다음 과 같 습 니 다.
<class name="com.itheima.domain.User" table="sys_user">
<id name="user_id" column="user_id">
class="native"/>
id>
<property name="user_code" column="user_code"/>
<property name="user_name" column="user_name"/>
<property name="user_password" column="user_password"/>
<property name="user_state" column="user_state"/>
<set name="roles" table="sys_user_role">
"user_id"/>
to-many class="com.itheima.domain.Role" column="role_id"/>
set>
class>
캐릭터 맵 설정 파일 은 다음 과 같 습 니 다.
<class name="com.itheima.domain.Role" table="sys_role">
<id name="role_id" column="role_id">
class="native"/>
id>
<property name="role_name" column="role_name"/>
<property name="role_memo" column="role_memo"/>
<set name="users" table="sys_user_role" inverse="true">
"role_id"/>
to-many class="com.itheima.domain.User" column="user_id"/>
set>
class>
4. 여러 쌍 이 서로 연 결 될 때: 한 측 이 외부 키 유지 권 을 포기 해 야 하 는 것 은 그 중의 한 측 에서 설정 하 는 것 입 니 다: inverse = "true" 입 니 다. 세 번 째 단 계 는 이미 설정 되 었 습 니 다. 주의해 서 관찰 하 십시오.
여기 서 주의해 야 할 것 은 xml 설정 은 hibenate 와 데이터 베 이 스 를 결합 하여 설정 한 것 입 니 다. 먼저 hibenate 의 코드 설정 을 참고 하고 사용자 측 설정 set 와 many - to - many 입 니 다.그 다음으로 데이터베이스 의 외 키 테이블 = "sysuser_role "키 column =" userid”
이로써 히 베 네 이 트 의 여러 쌍 이 많 으 면 설정 이 완료 되 고 코드 에서 히 베 네 이 트 로 crud 를 진행 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA 및 PostgreSQL 텍스트다음은 의 친구들과 논의한 후 오랫동안 초안으로 작성한 블로그 게시물이며 ( ) 주제에 대한 훌륭한 기사를 작성했기 때문에 여기에 작은 테스트를 게시하고 있습니다. JPA 주석 없이 String를 선언합니다. 재현하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.