hibernate笔记总结(二)

2014-11-24 10:24:18 · 作者: · 浏览: 1
g name;
private int age;
private Person_home ph;<-添加对方类型的属性
......
}
public class Person_home implements Serializable{
private int id;
private int person_num;
private String home_adr;
private Person per;<-添加对方类型的属性
......
}


(2)在映射描述文件中添加的定义

package="entity">















被动方 package="entity">




per















意思是Person中的id主属性与Person_home中的id主属性关联
fetch属性用于指定抓取策略.可以指定join和select值
join:是指联合查询,select:是指单独发送一条select语句查询


b.基于主外键关联的1:1
(1)主键Header表到外键School表的1:1
需要添加对方类型的属性
public class Header implements Serializable{
private int id;
private String hname;
private String address;
//主键到外键的映射
private School sc;<-添加对方的属性
......
}
public class School implements Serializable{
private int id;
private String name;
// private int hid;
//外键到主键,添加到主键的关联属性后,将存在重复的的属性hid去掉,否则发生异常
private Header he;<-添加对方的属性
......
}
(2)添加对方的映射
主表中
package="entity">















外键表中














添加外键约束的sql语句
alter table t_card
add constraint foreign key (emp_id)
references t_employee(id);


===========================================================
1,一对多,多对一关系和组件映射
Order表和Item表的一对多,多对一关系。其中Order表的某些属性又对应了另一个Address表.使用组件映射到Address。
Step1,分别在各自类中添加对方的属性
public class Order implements Serializable{
private int id;
private int status;
private long order_time;
private String order_desc;
private double total_price;
private Address address;//组件映射
//order-->item的一对多
private Set items;
......
}
****
public class Item implements Serializable{
private int id;
//private int order_id;//和一对一关系一样,添加了Order属性后必须删除关联属性,否则出错
private int product_id;
private String product_name;
private double dang_price;
private int product_num;
private double amount;
//添加item-->order多对一关系的属性
private Order order;
......
}


Step2,在映射文件中添加关系
在主表中:












































在从表中:

























=====================================
多对多关系和表间继承关系
------------------多对多--------------------------
多对多在数据库中需要对应3张数据表
d_category--->d_category_product<---d_product<---继承于--d_book
a.在持久类中添加集合类型的属性,用于多对多关联
public class Category implements Serializable{
private int id;
private int turn;
private String en_name;
private String name;
private String description;
private int parent_id;

//category-->product的多对多
private Set pros;
......
}
public class Product implements Serializable{
private int id;
private String product_name;
private String description;
private long add_time;
private double fixed_price;
private double dang_price;
private String keywords;
private int has_deleted;
private String product_pic;
//product-->category的多对多
private Set cats;
......
}
public class Book extends Product implements Serializable{
private int id;
private String author;
private String publishing;
private long publish_time;
private String word_number;
private String which_edtion;
private String total_page;
private long print_time;
private String print_number;
private String isbn;
private String author_summary;
private String catalogue;
......
}
b.在映射描述文件中,使用以下格式.使用继承关联后,无须为子表定义映射文件


column="与元素类型对应的关系表字段"/>

在Category.hbm.xml中




























在Product.hbm.xml中








































































==============================================================================
1.如何使用MyEclipse工具生成持久类和映射文件
1)由数据表生成持久类和映射文件
a.配置DB Browser中的数据库连接
b.创建工程,添加Hibernate框架支持
工程右键-->MyEclipse-->Add Hibernate Capability
c. 选择Hibernate版本和jar包引入方式
d.创建hibernate.cfg.xml主配置文件
e.设置主配置文件中的Db连接参数
f.创建HibernateSessionFactor