A. 多对一
a.1 新建Web project---many2one
a.2 添加hibernate支持
a.3 先进入DB Browser配置表中“一”的那一方。
a.4 配置“多”的那一方,其它的一样,最后一步:打倒数第二个勾。
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. 新建项目
b2. 添加hibernate支持
添加过程与“一对多”相同,都是指定了一个util包,不再赘述。添加后的项目如下:
b3. 把“多”先按最普通的方式建好。
b4. “一”前面基本上是普通的,仅最后一步,最下面的勾打上就好了。
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支持
c2. 反转配置: 选中两个表
c3. 最后一步。最下面的两个勾要打上。两个表分别配一下,仅Class name不同而已。
c4. 复制一个BaseHibernateDAO类过来。项目情况:
新建一个区县的DAO
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. 创建项目
d2. 选中两张表, 进行反转
说实在的,感觉最后一个应该是Hibernate比代码生成器更强大的地方,可惜没有讲完。有空再研究吧!
分享到:
相关推荐
- special_courses_on_id:外键,关联专题课程表,表示科目属于哪个专题课程。 - subject_name:科目的名称。 3. **course_grade**(课程年级表): - grade_id:年级的唯一标识,主键。 - special_courses_on_...
- 用户自定义分类编号 (user_category_id):外键,表示用户选择了哪个自定义分类。 6. **用户文章关联实体** (user_and_article): - 用户文章关联ID (user_and_article_id):主键,标识用户与文章的关联。 - ...
在设计一个精品课程网站的数据库时,我们首先要关注的是数据模型的合理性,这关系到系统的稳定性和可扩展性。从提供的文件信息来看,这个数据库...此外,考虑到数据库性能,可能需要在一些高频查询的字段上设置索引。
- role:整型,外键,表示用户的身份,对应权限表的主键,如学生、教师等。 **学生班级(Student_Class)表**: - ID:整型,主键,自增长。 - student_id:整型,外键,指向用户表的主键,标识学生。 - class_id:...
- `FK_AllocateInfo_Employee`:外键,关联到Employee表,通过员工编号连接。 - `PK_AllocateInfo`:主键,确保每一项调配信息的唯一性。 - `UQ_AllocateInfo_Allocate_EmployeeNo`:唯一性约束,确保同一员工...
* 材料号(Material_id):主键,外键 * 期初余额(Kc_balance):可以为空 * 现有库存(Kc_amout):可以为空 * 盘库数量(Kc_pc):可以为空 * 盘库盈亏(Kc_pcyk):可以为空 * 盘库时间(Kc_pctime):可以为空 ...
3. SET NULL:删除父表记录时,子表相关记录的外键字段会被设置为NULL,前提是该字段允许NULL值。 4. NO ACTION:与RESTRICT类似,但可能在某些数据库系统中产生不同的错误提示。 外键约束的应用场景广泛,例如在...
- 学院代码(D_ID):作为外键,关联学院信息,确保专业归属于某个学院。 3. **班级信息管理**: - 班号(C_ID):作为主键,由年份+三位顺序号组成,保证唯一性。 - 班级名称(C_NAME):记录班级的名称,如...
- `user_id` 和 `user_byid`:分别表示关系中的主动方和被动方用户ID,为外键。 4. **Messages**(微博表): - `messages_id`:主键,唯一标识一条微博。 - `messages_type`:微博的类型,如普通微博、转发等。...
1. RESTRICT(默认):禁止删除或更新父表中的记录,如果这会导致子表中存在没有对应父记录的外键。 2. CASCADE:父表中的记录被删除或更新时,所有相关联的子表记录也将被删除或更新。 3. SET NULL:父表记录被删除...
- `create_date`:客户添加到系统的日期,由INSERT触发器自动设置。 - `last_update`:更新时间。 7. **电影表(film)** - `film_id`:主键,唯一标识每个电影。 - `title`:电影标题。 - `description`:...
教务管理数据库是学校信息化建设中的重要...数据库设计时,应确保数据的一致性和完整性,合理设置主键和外键,避免数据冗余,提高查询效率。同时,还需要考虑性能优化,如创建合适的索引,对频繁查询的字段进行缓存等。
- `Log_tags`: 日志对应的标签ID,用于分类和搜索。 - `Log_time`: 日志创建时间,非空。 - `Log_content`: 日志正文,非空,包含详细信息。 - `Log_views`: 日志被查看的次数。 - `Log_replies`: 日志下的评论...
- `POWER_ID`:权限ID,作为外键,一个权限可以对应多个角色。 - `ROLE_ID`:角色ID,作为外键,一个角色可以拥有多个权限。 5. **Role表**: - `ROLE_ID`:角色ID,主键,自动增长。 - `ROLE_NAME`:角色名称...
- `book_sort_id`: 图书分类ID(外键) - **Borrow(借阅)** - `borrow_id`: 借阅ID(主键) - `stu_id`: 学生ID(外键) - `book_id`: 图书ID(外键) - `borrow_date`: 借阅日期 - `due_date`: 归还日期 - **...
- **外键命名**:以外键所指向的表名加下划线开头,如`account_id`指向`sub_account`表,则命名为`sub_account_account_id`。 ##### 1.2 术语清单 - **客户子账户**:指用户在支付平台上的具体账户,每个用户可以...
- `ISBN`:国际标准图书编码,作为主键,确保出版社与图书一一对应。 - `p_name`:出版社名称,非空,记录出版图书的出版社。 7. **借阅管理表(L_Borrow)** - `bw_id`:借阅编号,自增长整数Identity(1,1),...
- `U_FriendPolicyQuestion`、`U_FriendPolicyAnswer`、`U_FriendPolicyPassword`:用于设置添加好友时的安全策略,如问题、答案和密码,可为空。 2. **UserState 用户状态表**: - `US_ID`:主键,标识用户的...
- `br_id` 和 `t_id`:分别为品牌表和商品类别表的外键,关联品牌和商品类别。 - `g_place`:非空字段,表示商品展示的位置。 - `g_stockout`:非空字段,标记商品是否缺货。 - `g_delete`:非空字段,0表示未...
- `Speciality_Years`:学制,外键,参照学制表,表示专业所对应的学制年限。 3. **SpeYears(学制表)** - `SpeYears_ID`:学制编号,主键,标识不同的学制。 - `SpeYears_Name`:学制名称,如“四年制本科”。...