加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

创建学生表、班级表以及添加外键添加简单代码模板、Hibernate映射关系

(2017-01-22 20:42:22)
标签:

hibernate

javaweb

分类: 我的JAVA历程

(一)关于数据库创建注意事项。

--1)查询表

show tables;

--2)创建年级表

create table grade(

    gid int primary key,

    gname varchar(20) not null,

    gdesc varchar(50)  

);

--3)创建学生表

create table student(

    sid int primary key,

    sname varchar(20) not null,

    sex char(2),

     gid int

);

--4通过改表添加外键(以此可以设计多对一、一对一、一对多的关系)

alter table student add constraint fk_student_gid foreign key (gid)

references grade(gid);


(二)Hibernate映射关系

一对多

1)在one方添加实体中保存many的集合。

一方持有多方的集合,一方使用元素,持有“多”的一端。

例子:年级和学生表,年级是一方,一个年级对应多个学生。

则在年级的类中添加set,同时有一个getset方法:

private Set students = new HashSet();

(2) one方配置文件中添加配置

 <</span>class name="entity.Grade" table="grade" catalog="muketest">  

 

//-------------------------------------------------

        <</span>set name="students" table="student">

            <</span>key>

                <</span>column name="gid" />

            </</span>key>

            <</span>one-to-many class="entity.Student" />

        </</span>set>

//-------------------------------------------------

 

</</span>class> 

 

 

多对一

多对一的关系和关系数据库中外键参照关系是最匹配的,即在己方中一个外键,参照另一个表的主键。

(1)many方的实体中添加One方的引用(多对一通过对象引用,一对多通过set引用)。

 private C_Class classObject;

(2)many放配置文件中天剑配合

<</span>class name="com.neusoft.entity.CS_Student" table="cs_student">

<</span>many-to-one name="classObject" column="cid" class="com.neusoft.entity.C_Class"

 not-null="true" cascade="save-update"/>

</</span>class>

 

双向关联时候:

(1)inverse属性指定关联关系控制方向,默认由one方维护。

(2)在关联关系中,inverse="false"则是主动方,主动方维护关联关系。

(3)在一对多的关联中,只能设置oneinverse="true"有助于性能改变。(如果没有,保存了学生、班级信息后,又有一条update学生的年级信息,不够优化

 

 

(三)在测试类测试方法常用代码:

1)获取session

Session session=HibernateSessionFactory.getSession();

2开启事务常用代码: session.beginTransaction();

3)进行增删改查操作。

进行操作:session.save(grade);

Deleteupdate、等操作。

......

4)提交事务:session.getTransaction().commit();//提交事务

5)关闭事务:session.close();

 


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有