`
izuoyan
  • 浏览: 9220833 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ssh_ch06:hibernate外键对应设置

 
阅读更多

A. 多对一

a.1 新建Web project---many2one

image

a.2 添加hibernate支持

image

image

image

a.3 先进入DB Browser配置表中“一”的那一方。

image

image

image

image

a.4 配置“多”的那一方,其它的一样,最后一步:打倒数第二个勾。

image

a.5 建立一个测试类测试一下。

package com.yenange.dao;
import org.hibernate.Session;
import com.yenange.entity.JD;

public class JDDao {
public static void main(String[] args) {
Session session =util.HibernateSessionFactory.getSession();
JD jd=(JD)session.get(JD.class, 2);
System.out.println(jd.getJd());
System.out.println(jd.getTblQx().getQx());
}
}

至此,全部完成。

总结:其实很简单。1、把“一”按最普通的方式反转;2、把“多”按普通方式反转,最后一步倒数第二个勾上就好。


B. 一对多

b1. 新建项目

image

b2. 添加hibernate支持

image

添加过程与“一对多”相同,都是指定了一个util包,不再赘述。添加后的项目如下:

image

b3. 把“多”先按最普通的方式建好。

image

image

image

b4. “一”前面基本上是普通的,仅最后一步,最下面的勾打上就好了。

image

b5. 做一个测试类试一下.

package com.yenange.dao;
import java.util.Set;
import org.hibernate.Session;
import com.yenange.entity.JD;
import com.yenange.entity.QX;

public class Test {
public static void main(String[] args) {
Session session =util.HibernateSessionFactory.getSession();
QX qx=(QX)session.get(QX.class, 1);
System.out.println(qx.getQx());
Set<JD> set=qx.getTblJds();
System.out.println("总数:"+set.size());
for (JD jd : set) {
System.out.println(jd.getJd());
}
}
}

至此,全部完成。

总结:其实很简单。1、把“多”按最普通的方式反转;2、把“一”按普通方式反转,最后一步倒数第一个勾上就好。


C. 双向一对多

c1. 建立项目,添加hibernate支持

image

c2. 反转配置: 选中两个表

image

c3. 最后一步。最下面的两个勾要打上。两个表分别配一下,仅Class name不同而已。

image

c4. 复制一个BaseHibernateDAO类过来。项目情况:

image

新建一个区县的DAO

image

c5. 做一个测试类:

package com.yenange.dao;
import com.yenange.entity.JD;
import com.yenange.entity.QX;

public class QXDAO extends BaseHibernateDAO {
public static void main(String[] args) {
QX qx=new QX();
qx.setQx("海珠区");
QXDAO dao=new QXDAO();
dao.add(qx);
QX qx2=(QX)dao.get(QX.class, 22);
JD jd=new JD();
jd.setJd("新港西路");
jd.setTblQx(qx2);
dao.add(jd);
}
}

c6. 对于删除等可能涉及到外键的:

1、区县(“一”)的那一方的映射文件:

<set name="tblJds" inverse="true" cascade="all">

2. 测试文件添加代码:

dao.delete(QX.class, 22);//成功!!


D 多对多

d1. 创建项目

image

d2. 选中两张表, 进行反转

image

image

image

image

说实在的,感觉最后一个应该是Hibernate比代码生成器更强大的地方,可惜没有讲完。有空再研究吧!

分享到:
评论

相关推荐

    资源管理数据库设计.pdf

    - special_courses_on_id:外键,关联专题课程表,表示科目属于哪个专题课程。 - subject_name:科目的名称。 3. **course_grade**(课程年级表): - grade_id:年级的唯一标识,主键。 - special_courses_on_...

    4数据库设计说明1

    - 用户自定义分类编号 (user_category_id):外键,表示用户选择了哪个自定义分类。 6. **用户文章关联实体** (user_and_article): - 用户文章关联ID (user_and_article_id):主键,标识用户与文章的关联。 - ...

    数据库表1

    在设计一个精品课程网站的数据库时,我们首先要关注的是数据模型的合理性,这关系到系统的稳定性和可扩展性。从提供的文件信息来看,这个数据库...此外,考虑到数据库性能,可能需要在一些高频查询的字段上设置索引。

    数据库表结构设计1

    - role:整型,外键,表示用户的身份,对应权限表的主键,如学生、教师等。 **学生班级(Student_Class)表**: - ID:整型,主键,自增长。 - student_id:整型,外键,指向用户表的主键,标识学生。 - class_id:...

    HR数据库设计.doc

    - `FK_AllocateInfo_Employee`:外键,关联到Employee表,通过员工编号连接。 - `PK_AllocateInfo`:主键,确保每一项调配信息的唯一性。 - `UQ_AllocateInfo_Allocate_EmployeeNo`:唯一性约束,确保同一员工...

    企业仓库管理系统数据库设计ppt课件.ppt

    * 材料号(Material_id):主键,外键 * 期初余额(Kc_balance):可以为空 * 现有库存(Kc_amout):可以为空 * 盘库数量(Kc_pc):可以为空 * 盘库盈亏(Kc_pcyk):可以为空 * 盘库时间(Kc_pctime):可以为空 ...

    MLDN魔乐科技_Oracle课堂18_外键约束

    3. SET NULL:删除父表记录时,子表相关记录的外键字段会被设置为NULL,前提是该字段允许NULL值。 4. NO ACTION:与RESTRICT类似,但可能在某些数据库系统中产生不同的错误提示。 外键约束的应用场景广泛,例如在...

    学生管理系统需实现的功能.doc

    - 学院代码(D_ID):作为外键,关联学院信息,确保专业归属于某个学院。 3. **班级信息管理**: - 班号(C_ID):作为主键,由年份+三位顺序号组成,保证唯一性。 - 班级名称(C_NAME):记录班级的名称,如...

    课程微博数据库设计.pdf

    - `user_id` 和 `user_byid`:分别表示关系中的主动方和被动方用户ID,为外键。 4. **Messages**(微博表): - `messages_id`:主键,唯一标识一条微博。 - `messages_type`:微博的类型,如普通微博、转发等。...

    MLDN魔乐科技JAVA培训_Oracle课堂18_外键约束.rar

    1. RESTRICT(默认):禁止删除或更新父表中的记录,如果这会导致子表中存在没有对应父记录的外键。 2. CASCADE:父表中的记录被删除或更新时,所有相关联的子表记录也将被删除或更新。 3. SET NULL:父表记录被删除...

    Sakila—MySQL样例数据库解析.doc

    - `create_date`:客户添加到系统的日期,由INSERT触发器自动设置。 - `last_update`:更新时间。 7. **电影表(film)** - `film_id`:主键,唯一标识每个电影。 - `title`:电影标题。 - `description`:...

    oraclo教务管理数据库.doc

    教务管理数据库是学校信息化建设中的重要...数据库设计时,应确保数据的一致性和完整性,合理设置主键和外键,避免数据冗余,提高查询效率。同时,还需要考虑性能优化,如创建合适的索引,对频繁查询的字段进行缓存等。

    社区网站数据库设计说明书

    - `Log_tags`: 日志对应的标签ID,用于分类和搜索。 - `Log_time`: 日志创建时间,非空。 - `Log_content`: 日志正文,非空,包含详细信息。 - `Log_views`: 日志被查看的次数。 - `Log_replies`: 日志下的评论...

    OA办公系统数据库表说明

    - `POWER_ID`:权限ID,作为外键,一个权限可以对应多个角色。 - `ROLE_ID`:角色ID,作为外键,一个角色可以拥有多个权限。 5. **Role表**: - `ROLE_ID`:角色ID,主键,自动增长。 - `ROLE_NAME`:角色名称...

    图书管理系统数据库设计MYSQL实现.docx

    - `book_sort_id`: 图书分类ID(外键) - **Borrow(借阅)** - `borrow_id`: 借阅ID(主键) - `stu_id`: 学生ID(外键) - `book_id`: 图书ID(外键) - `borrow_date`: 借阅日期 - `due_date`: 归还日期 - **...

    支付平台数据库设计文档(推荐文档).doc

    - **外键命名**:以外键所指向的表名加下划线开头,如`account_id`指向`sub_account`表,则命名为`sub_account_account_id`。 ##### 1.2 术语清单 - **客户子账户**:指用户在支付平台上的具体账户,每个用户可以...

    图书管理系统数据库表设计.pdf

    - `ISBN`:国际标准图书编码,作为主键,确保出版社与图书一一对应。 - `p_name`:出版社名称,非空,记录出版图书的出版社。 7. **借阅管理表(L_Borrow)** - `bw_id`:借阅编号,自增长整数Identity(1,1),...

    聊天软件数据库设计.doc

    - `U_FriendPolicyQuestion`、`U_FriendPolicyAnswer`、`U_FriendPolicyPassword`:用于设置添加好友时的安全策略,如问题、答案和密码,可为空。 2. **UserState 用户状态表**: - `US_ID`:主键,标识用户的...

    电子商城数据库详细设计说明书1.doc

    - `br_id` 和 `t_id`:分别为品牌表和商品类别表的外键,关联品牌和商品类别。 - `g_place`:非空字段,表示商品展示的位置。 - `g_stockout`:非空字段,标记商品是否缺货。 - `g_delete`:非空字段,0表示未...

    学校学生的系统数据库表设计.doc

    - `Speciality_Years`:学制,外键,参照学制表,表示专业所对应的学制年限。 3. **SpeYears(学制表)** - `SpeYears_ID`:学制编号,主键,标识不同的学制。 - `SpeYears_Name`:学制名称,如“四年制本科”。...

Global site tag (gtag.js) - Google Analytics