(1) 对应表及对象
父表:user
create table user(
id
int auto_increment primary key,
username
char(15),
password
char(15)
)
父对象:
子表:
create table student(
stuId
int primary key,
address
char(50),
foreign
key (stuId) references user(id)
)
子对象:
(2)对应的hibernate o/r映射文件
User.hbm.xml:
- <?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">
- <!--
- Mapping file autogenerated by MyEclipse Persistence Tools
- -->
- <hibernate-mapping>
- <class name="com.ckcs.db.entry.User" table="user" catalog="hibernate">
- <id name="id" type="java.lang.Integer">
- <column name="id" />
- <generator class="native"></generator>
- </id>
- <property name="password" type="java.lang.String">
- <column name="password" length="50" />
- </property>
- <property name="username" type="java.lang.String">
- <column name="username" length="50" />
- </property>
- <set name="students" inverse="true" cascade="all">
- <key>
- <column name="stuId" not-null="true" unique="true" />
- </key>
- <one-to-many class="com.ckcs.db.entry.Student" />
- </set>
- </class>
- </hibernate-mapping>
Student.hbm.xml:
(3)测试:
- package com.ckcs.test;
- import org.hibernate.Session;
- import com.ckcs.HibernateSessionFactory;
- import com.ckcs.db.entry.Student;
- import com.ckcs.db.entry.User;
- public class Test {
- public void saveUser() {
- Session session = HibernateSessionFactory.getSession();
- session.beginTransaction();
-
- User user = new User();
- user.setUsername("小王");
- user.setPassword("000");
- Student studnet = new Student();
- studnet.setAddress("小路旁");
- //子类关联父类
- studnet.setUser(user);
- //父类关联子类
- user.getStudents().add(studnet);
- session.save(user);
- session.getTransaction().commit();
- }
- public static void main(String[] args) {
- Test test = new Test();
- test.saveUser();
- }
- }