关系:
Java中的对象往往不是孤立存在的,对象之间会有关系;
总结可分为三大类(共五大总):
关联关系{
1:1关联关系;
1:n关联关系;
n:n关联关系;
}
继承关系
值对象关系
Person{name,age,sex,IDcard}
IDcard{id,date,address,person}
在Java对象中的关联关系,通过属性来表示
在数据库中的关联关系,通过外键来表示
而每种关联关系又有
单向关系:只能从关系中的对象找到另一个对象
双向关系:从关系的任意一个对象都能找到对应这任意一个对象
table t_person{
t_id PK
t_name
t_age
t_sex
}
table t_IDcard{
t_ID PK references t_person(t_id) --共享主键
t_date
t_address
}
//
一对多的关系
User{id,name,age,sex,set<order>}
Order{num,address,price,user}
t_user{
t_id PK,
t_name,
t_age,
t_sex
}
t_order{
t_num PK,
t_address,
t_price,
user_id FK t_user(t_id)
}
/
多对多的关系
Student{id pk,name,}
course{}
Hibernate中如何处理关联关系?
ORMaping原则
父表要先插入,子表先删除
有外键的是子表
类中用属性表示关系
表中用外键表示关系
修改配置文件 hibernate.cfg.xml
添加一条maping
<mapping resource="com/entity/Person.hbm.xml"></mapping>
<hibernate-configuration>
<session-factory>
<!-- 1,链接相关的内容 -->
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<property name="connection.username">user</property>
<property name="connection.password">123456</property>
<!-- 2,自身属性相关的内容 -->
<!-- 方言:对数据库的优化 -->
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="show_sql">true</property>
<!-- 3,映射相关的内容 -->
<mapping resource="com/User.hbm.xml"/>
<mapping resource="com/entity/Person.hbm.xml"><!--添加映射--></mapping>
</session-factory>
</hibernate-configuration>