应用实例:学生选课系统。
要求:学生登录系统后,可以查看、修改个人信息,查看个人选课情况,选定课程及退选课程。
建立数据库和表
郝同学仍然使用MySQL数据库,scott用户。在xscj数据库中建立登录表、学生表、专业表、课程表,以及学生课程表即连接表。
1 | create table dlb( |
应用实例:学生选课系统。
要求:学生登录系统后,可以查看、修改个人信息,查看个人选课情况,选定课程及退选课程。
郝同学仍然使用MySQL数据库,scott用户。在xscj数据库中建立登录表、学生表、专业表、课程表,以及学生课程表即连接表。
1 | create table dlb( |
首先在hibernate.cfg.xml中设置批量尺寸属性hibernate.jdbc.batch_size,最好关闭Hibernate的二级缓存以提高效率。
1 | <hibernate-configuration> |
下面批量插入500个课程到数据库表中:
1 | //KcbBatch.java |
Hibernate关系映射的主要任务是实现数据库关系表与持久化类之间的映射。
在注册某个论坛会员的时候,往往不但要填写登录账户和密码,还要填写其他的详细信息,这两部分信息通常会放在不同的表中。
共享主键方式就是限制两个数据表的主键使用相同的值,通过主键形成一对一映射关系。
建立login表和detail表:
1 | create table login( |
登陆表和详细信息表属于典型的一对一关联关系,可按共享主键方式进行。
在Hibernate概述中实例的基础上,接着开发。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装(未完全封装),使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
对目前的JavaEE信息化系统而言,通常采用面向对象分析和面向对象设计的过程。系统从需求分析到系统设计都是按面向对象方式进行。但是到详细设计阶段,由于数据持久化需要保存到关系数据库,不得不自底向上修改设计方案,又回到了按照过程进行编程的老路上来,这是非常令人沮丧的。
但人们的智慧是无穷的,遇到问题总会想办法解决,而不是与之妥协或绕道而走。Hibernate的问世解决了这个问题,Hibernate是一个面向Java环境的对象/关系映射工具,它可将对象模型表示的对象映射到基于SQL的关系数据模型中。这样就不用再为怎样用面向对象的方法进行数据持久化而大伤脑筋了。
本实例实现了一个简单的功能:添加学生信息。
我们仍然在Struts2概述中struts2项目的基础上进行。
使用MySQL,scott用户,建立数据库,名为XSCJ,其中有一张表XSB,结构如下:
项目名 | 列名 | 数据类型 | 可空 | 默认值 | 说明 |
---|---|---|---|---|---|
学号 | XH | 定长字符串型(char6) | × | 无 | 主键 |
姓名 | XM | 不定长字符串型(varchar8) | × | 无 | |
性别 | XB | 位型(bit) | × | 无 | 值约束:1/0。1表示男,0表示女 |
出生时间 | CSSJ | 日期时间型(datetime) | √ | 无 | |
专业Id | ZY_ID | 整数型(int) | × | 无 | |
总学分 | ZXF | 整数型(int) | √ | 0 | 0<=总学分<160 |
备注 | BZ | 不定长字符串型(varchar500) | √ | 无 | |
照片 | ZP | longblob | √ | 无 |
1 | create database xscj; |