hibernate 학습의 12편(속편)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="hibernate.extend" auto-import="false">
<class name="Person" table="person">
<id name="id">
<generator class="hilo"/>
</id>
<property name="name"/>
<property name="age"/>
<union-subclass name="Worker" table="worker">
<property name="work_year"/>
</union-subclass>
<union-subclass name="Farmer" table="farmer">
<property name="farm_name"/>
</union-subclass>
</class>
</hibernate-mapping>
생성된 sql 문구는 다음과 같습니다.
쓰다
Hibernate: insert into person (name, age, id) values (?, ?, ?)
Hibernate: insert into worker (name, age, work_year, id) values (?, ?, ?, ?)
Hibernate: insert into farmer (name, age, farm_name, id) values (?, ?, ?, ?)
Hibernate: select person0_.id as id8_0_, person0_.name as name8_0_, person0_.age as age8_0_, person0_.work_year as work1_9_0_, person0_.farm_name as farm1_10_0_, person0_.clazz_ as clazz_0_ from ( select null as work_year, id, age, name, null as farm_name, 0 as clazz_ from person union select work_year, id, age, name, null as farm_name, 1 as clazz_ from worker union select null as work_year, id, age, name, farm_name, 2 as clazz_ from farmer ) person0_ where person0_.id=?
실행 후 데이터베이스의 테이블 구조는 다음과 같습니다. person 테이블: +--+------------+----| id | name | age | +--+----------+--------+| 1 | person | 22 | +----------------------------------------------------------------------------------------------+| id | name | workyear | +--+--------+----+------------------------------------------------+--------------------------------------+------------+------------------------------+| id | name |age |farmname|+--+------+----+----------------------+|3 | farmer | 31 | little candy | +----+----+--------------------------------+주의: 우리는 메인 키 생성기를 높낮이 키 생성기로 바꾸었다는 것을 알아차렸다.native는 사용하는 데이터베이스에 따라 상응하는 키 생성 방식을 자동으로 선택하기 때문에 mysql 데이터베이스를 사용하기 때문에 키 필드는 자동으로 증가한다.세 개의 테이블에 같은 키 id가 있다는 뜻이다.이렇게 하면 조회할 때 문제가 발생할 수 있다.당신이 id가 1인 개인을 찾았을 때, 그는 세 장의 표에서 모두 결과를 얻을 것이다. 이것은 분명히 안 된다.그래서 여기서 고저 키hilo 생성 방식을 바꾸면 이런 문제가 발생하지 않을 것이다.위의 표의 데이터도 알아볼 수 있다.세 테이블의 id는 서로 다르다.이런 설계는 실제 수요에 더욱 부합된다.보충: 또한 때때로 부류는 추상류이기 때문에 데이터베이스에 표를 만들 필요가 없다.이것은 속성 설정 하나만 추가하면 됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.