JavaWeb学习入门之——图书馆管理系统开发(Hibernate学习1)

最近看了看JavaWeb的书籍,才感觉到大二时候学的JavaWeb才仅仅只是个入门。最尴尬的当初还没咋学一直在看.NET,现在看起来JavaWeb,各种框架各种头疼啊。看了几个例子之后觉得,还是自己动手做个项目试试。边做边学才能学的快一点。做的时候用博客园记录下过程,省得以后忘。之所以选图书馆管理系统呢,是因为做过几个课程设计。对它的需求还是比较了解一点。现在通用的框架模式都是MVC,我在学的时候想先从Model层开始学。于是就先选Hibernate开始。

一、数据库

先简单设计几张表,图书表,读者,管理员,借阅记录表。以下是建表的语句

 1 /*
 2 Navicat MySQL Data Transfer
 3
 4 Source Server         : root
 5 Source Server Version : 50513
 6 Source Host           : localhost:3306
 7 Source Database       : db_librarysystem
 8
 9 Target Server Type    : MYSQL
10 Target Server Version : 50513
11 File Encoding         : 65001
12
13 Date: 2017-06-11 13:00:32
14 */
15
16 SET FOREIGN_KEY_CHECKS=0;
17
18 -- ----------------------------
19 -- Table structure for tb_administrator
20 -- ----------------------------
21 DROP TABLE IF EXISTS `tb_administrator`;
22 CREATE TABLE `tb_administrator` (
23   `adminid` int(11) NOT NULL,
24   `name` varchar(20) NOT NULL COMMENT ‘管理员登录名‘,
25   `pwd` varchar(15) NOT NULL COMMENT ‘密码‘,
26   `createdate` varchar(50) NOT NULL COMMENT ‘管理员创建时间‘,
27   PRIMARY KEY (`adminid`)
28 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
29
30 -- ----------------------------
31 -- Records of tb_administrator
32 -- ----------------------------
33
34 -- ----------------------------
35 -- Table structure for tb_book
36 -- ----------------------------
37 DROP TABLE IF EXISTS `tb_book`;
38 CREATE TABLE `tb_book` (
39   `bid` int(11) NOT NULL COMMENT ‘图书编号‘,
40   `name` varchar(50) NOT NULL COMMENT ‘书名‘,
41   `ISBN` varchar(20) NOT NULL,
42   `author` varchar(20) NOT NULL COMMENT ‘图书作者‘,
43   `Publisher` varchar(50) NOT NULL COMMENT ‘图书出版社‘,
44   `BType` varchar(20) NOT NULL COMMENT ‘图书类型‘,
45   `BPrice` decimal(10,0) NOT NULL COMMENT ‘图书价格‘,
46   `BCount` int(11) NOT NULL COMMENT ‘图书总数‘,
47   `Bstate` varchar(20) NOT NULL COMMENT ‘图书状态(在架,已外借,丢失)‘,
48   PRIMARY KEY (`bid`)
49 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
50
51 -- ----------------------------
52 -- Records of tb_book
53 -- ----------------------------
54
55 -- ----------------------------
56 -- Table structure for tb_borrow
57 -- ----------------------------
58 DROP TABLE IF EXISTS `tb_borrow`;
59 CREATE TABLE `tb_borrow` (
60   `borrowid` int(11) NOT NULL,
61   `rid` int(11) NOT NULL,
62   `bid` int(11) NOT NULL,
63   `BorrwTime` varchar(50) NOT NULL COMMENT ‘借书时间‘,
64   `ReturnTime` varchar(50) DEFAULT NULL COMMENT ‘还书时间‘,
65   `ISReturn` varchar(5) NOT NULL COMMENT ‘是否归还‘,
66   `NoReturn` varchar(5) DEFAULT NULL COMMENT ‘归还异常‘,
67   PRIMARY KEY (`borrowid`),
68   KEY `borrow_bid` (`bid`),
69   KEY `borrow_rid` (`rid`),
70   CONSTRAINT `borrow_bid` FOREIGN KEY (`bid`) REFERENCES `tb_book` (`bid`) ON DELETE CASCADE ON UPDATE CASCADE,
71   CONSTRAINT `borrow_rid` FOREIGN KEY (`rid`) REFERENCES `tb_reader` (`rid`) ON DELETE CASCADE ON UPDATE CASCADE
72 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
73
74 -- ----------------------------
75 -- Records of tb_borrow
76 -- ----------------------------
77
78 -- ----------------------------
79 -- Table structure for tb_reader
80 -- ----------------------------
81 DROP TABLE IF EXISTS `tb_reader`;
82 CREATE TABLE `tb_reader` (
83   `rid` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘读者编号‘,
84   `name` varchar(20) NOT NULL DEFAULT ‘‘ COMMENT ‘读者姓名‘,
85   `sex` varchar(2) NOT NULL DEFAULT ‘‘ COMMENT ‘性别‘,
86   `idcard` varchar(11) NOT NULL DEFAULT ‘‘ COMMENT ‘证件号‘,
87   `rmoney` double NOT NULL DEFAULT ‘0‘ COMMENT ‘欠费金额‘,
88   `rstate` varchar(10) NOT NULL DEFAULT ‘‘ COMMENT ‘读者状态‘,
89   `rcount` int(11) NOT NULL DEFAULT ‘3‘ COMMENT ‘可借阅数‘,
90   `pwd` varchar(15) NOT NULL DEFAULT ‘123456‘ COMMENT ‘登陆密码‘,
91   PRIMARY KEY (`rid`)
92 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
93
94 -- ----------------------------
95 -- Records of tb_reader
96 -- ----------------------------

数据库建表语句

二、搭建Hibernate环境

1.先用MyEclipse建立一个名为LibrarySystem的Web项目。然后让项目的字符编码设置为UTF-8(这一步我老是忘,结果后面出现中文乱码了才想起来)。

2.引入Hibernate所需要的包

3.引入Hibernate配置文件(放到src目录下)

 1 <?xml version=‘1.0‘ encoding=‘UTF-8‘?>
 2 <!DOCTYPE hibernate-configuration PUBLIC
 3           "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 4           "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
 5 <!-- Generated by MyEclipse Hibernate Tools.                   -->
 6 <hibernate-configuration>
 7
 8     <session-factory>
 9         <!-- 方言 -->
10         <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
11         <!-- 数据库连接 -->
12         <property name="connection.url">jdbc:mysql://localhost:3306/db_LibrarySystem</property>
13         <!-- 数据库连接用户名 -->
14         <property name="connection.username">root</property>
15         <!-- 数据库连接密码 -->
16         <property name="connection.password">sasasa</property>
17         <!-- 数据库驱动 -->
18         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
19         <!-- 打印SQL语句 -->
20         <property name="show_sql">true</property>
21         <!-- 自动建表 -->
22         <property name="hbm2ddl.auto">update</property>
23         <!-- 映射文件 -->
24         <mapping resource="com/lby/entity/Reader.hbm.xml" />
25         <mapping resource="com/lby/entity/Borrow.hbm.xml" />
26         <mapping resource="com/lby/entity/Administrator.hbm.xml" />
27         <mapping resource="com/lby/entity/Book.hbm.xml" />
28     </session-factory>
29
30 </hibernate-configuration>

hibernate.cfg.xml

4.建立项目的包结构

三、创建实体类

说起创建实体类,刚开始我还不知MyEclipse有自动生成Get,Set方法的快捷方式。我开始还一个一个大,后来感觉累了去网上搜一下才发现真有。以前不知道真是悲催。

自动生成Get,Set方法,在代码界面上右击弹出菜单里选source->Generate Getters and Setters

选中要生成的变量,点击OK就生成了。

 1 package com.lby.entity;
 2
 3 /**
 4  * @author Administrator
 5  *
 6  */
 7 public class AdministratorInfo {
 8     private Integer adminid;//管理员编号
 9     private String name;//管理员姓名
10     private String pwd;//登录密码
11     private String createdate;//创建时间
12     public Integer getAdminid() {
13         return adminid;
14     }
15     public void setAdminid(Integer adminid) {
16         this.adminid = adminid;
17     }
18     public String getName() {
19         return name;
20     }
21     public void setName(String name) {
22         this.name = name;
23     }
24     public String getPwd() {
25         return pwd;
26     }
27     public void setPwd(String pwd) {
28         this.pwd = pwd;
29     }
30     public String getCreatedate() {
31         return createdate;
32     }
33     public void setCreatedate(String createdate) {
34         this.createdate = createdate;
35     }
36
37 }

AdministratorInfo

 1 package com.lby.entity;
 2
 3 public class BookInfo {
 4     private Integer bid;//图书编号
 5     private String  name;//书名
 6     private String  isbn;//索书号
 7     private String  author;//作者
 8     private String  publisher;//出版社
 9     private String  btype;//图书类型
10     private Double  bprice;//图书价格
11     private Integer bcount;//图书数量
12     private String  bstate;//图书状态
13     public Integer getBid() {
14         return bid;
15     }
16     public void setBid(Integer bid) {
17         this.bid = bid;
18     }
19     public String getName() {
20         return name;
21     }
22     public void setName(String name) {
23         this.name = name;
24     }
25     public String getIsbn() {
26         return isbn;
27     }
28     public void setIsbn(String isbn) {
29         this.isbn = isbn;
30     }
31     public String getAuthor() {
32         return author;
33     }
34     public void setAuthor(String author) {
35         this.author = author;
36     }
37     public String getPublisher() {
38         return publisher;
39     }
40     public void setPublisher(String publisher) {
41         this.publisher = publisher;
42     }
43     public String getBtype() {
44         return btype;
45     }
46     public void setBtype(String btype) {
47         this.btype = btype;
48     }
49     public Double getBprice() {
50         return bprice;
51     }
52     public void setBprice(Double bprice) {
53         this.bprice = bprice;
54     }
55     public Integer getBcount() {
56         return bcount;
57     }
58     public void setBcount(Integer bcount) {
59         this.bcount = bcount;
60     }
61     public String getBstate() {
62         return bstate;
63     }
64     public void setBstate(String bstate) {
65         this.bstate = bstate;
66     }
67
68 }

BookInfo

 1 package com.lby.entity;
 2
 3 public class BorrowInfo {
 4     private Integer borrowid;//借阅编号
 5     private Integer rid;//读者编号
 6     private Integer bid;//图书编号
 7     private String borrwTime;//借书时间
 8     private String returnTime;//还书时间
 9     private String isreturn;//是否归还
10     private String noReturn;//归还异常
11     public Integer getBorrowid() {
12         return borrowid;
13     }
14     public void setBorrowid(Integer borrowid) {
15         this.borrowid = borrowid;
16     }
17     public Integer getRid() {
18         return rid;
19     }
20     public void setRid(Integer rid) {
21         this.rid = rid;
22     }
23     public Integer getBid() {
24         return bid;
25     }
26     public void setBid(Integer bid) {
27         this.bid = bid;
28     }
29     public String getBorrwTime() {
30         return borrwTime;
31     }
32     public void setBorrwTime(String borrwTime) {
33         this.borrwTime = borrwTime;
34     }
35     public String getReturnTime() {
36         return returnTime;
37     }
38     public void setReturnTime(String returnTime) {
39         this.returnTime = returnTime;
40     }
41     public String getIsreturn() {
42         return isreturn;
43     }
44     public void setIsreturn(String isreturn) {
45         this.isreturn = isreturn;
46     }
47     public String getNoReturn() {
48         return noReturn;
49     }
50     public void setNoReturn(String noReturn) {
51         this.noReturn = noReturn;
52     }
53
54 }

BorrowInfo

 1 package com.lby.entity;
 2
 3 public class ReaderInfo {
 4     private Integer rid;//读者编号
 5     private String name;//读者姓名
 6     private String sex;//性别
 7     private String idcard;//证件号
 8     private Double rmoney;//欠费金额
 9     private String rstate;//读者状态
10     private String rcount;//可借阅数
11     private String pwd;//登录密码
12
13     public Integer getRid() {
14         return rid;
15     }
16     public void setRid(Integer rid) {
17         this.rid = rid;
18     }
19     public String getName() {
20         return name;
21     }
22     public void setName(String name) {
23         this.name = name;
24     }
25     public String getSex()
26     {
27         return sex;
28     }
29     public void setSex(String sex)
30     {
31         this.sex=sex;
32     }
33     public String getIdcard()
34     {
35         return idcard;
36     }
37     public void setIdcard(String idcard)
38     {
39         this.idcard=idcard;
40     }
41     public Double getRmoney()
42     {
43         return rmoney;
44     }
45     public void setRmoney(Double rmoney)
46     {
47         this.rmoney=rmoney;
48     }
49     public String getRstate()
50     {
51         return rstate;
52     }
53     public void setRstate(String rstate)
54     {
55         this.rstate =rstate;
56     }
57     public String getRcount()
58     {
59         return rcount;
60     }
61     public void setRcount(String rcount)
62     {
63         this.rcount =rcount;
64     }
65     public String getPwd()
66     {
67         return pwd;
68     }
69     public void setPwd(String pwd)
70     {
71         this.pwd=pwd;
72     }
73 }

ReaderInfo

今天先写这么多,由于是刚学。不敢保证这样做就一定正确,大家仅作参考就行了。

时间: 2024-10-06 06:13:20

JavaWeb学习入门之——图书馆管理系统开发(Hibernate学习1)的相关文章

2018年web前端学习路线图,WEB前端开发新手学习路线

前端的的技术一直在变化,更新和变革,现在基本是三驾马车(vue,angualr,react)主导整个前端框架,但是无论对于新人或者有经验的程序员,这些知识在必须掌握,下面给大家一份详细的表单: html的语法.格局,常用的标签极端作用,了解标签的嵌套.学习运用firefox+firebug或许chrom的调试工具,可以运用这些工具调试html.css.js.断点调试.抓包 怎么引入css.js.了解id.class属性的区别,学会css的常用选择器,了解盒子模型(padding,margin,b

【Java EE 学习第47天】【Hibernate学习第四天】【sesion】【一级缓存】【懒加载】

一.Session概述 1.Session 接口是 Hibernate 向应用程序提供的操纵对数据库的最主要的接口, 它提供了基本的保存, 更新, 删除和加载Java 对象的方法. 2.理解Session的缓存 使用缓存的目的:尽量减少访问数据库的频率 (1)在 Session 接口的实现中包含一系列的 Java 集合, 这些 Java 集合构成了 Session 缓存. 只要 Session 实例没有结束生命周期, 存放在它缓存中的对象也不会结束生命周期 (2)当session的save()方

【Java EE 学习第48天】【Hibernate学习第五天】【抓取策略】【二级缓存】【HQL】

一.抓取策略. 1.hibernate中提供了三种抓取策略. (1)连接抓取(Join Fetch):这种抓取方式是默认的抓取方式.使用这种抓取方式hibernate会在select中内连接的方式获取对象的关联对象或者关联集合. (2)查询抓取(select Fetch):这种抓取方式会另外发送一条select语句抓取当前对象的关联实体或者集合.除非指定lazy=false,否则只有在真正访问关联关系的时候才会执行第二条select语句. (3)子查询抓取(subselect Fetch):另外

【Java EE 学习第46天】【Hibernate学习第三天】【多对多关系映射】

一.多对多关系概述 以学生和课程之间的关系为例. 1.在多对多关系中涉及到的表有三张,两张实体表,一张专门用于维护关系的表. 2.多对多关系中两个实体类中应当分别添加对方的Set集合的属性,并提供set和get方法. 3.在配置映射文件的时候较一对多关系复杂. 二.映射文件 <set name="students" table="course_stu" cascade="save-update" inverse="true&quo

oracle学习入门系列之六 模式

oracle学习入门系列之六 模式 上篇咱们学习记录了ORACLE数据库中的数据库结构.内存结构和进程等,篇幅 蛤蟆感觉偏多了.这次要休整下,每次笔记不宜太多,不然与书籍有何区别.我们要保证的是每次做记录都能所有收获所有提升. 上次中我们从总体上把握了下ORACLE系统结构,这次开始我们将涉及到ORACLE数据库的具体方方面面了.本次就从模式对象入手. 老规矩,先来两个问题: a)        什么事模式 b)       为什么需要 搞清楚这两个问题即可. 本人邮箱:[email prote

6. oracle学习入门系列之六 模式

oracle学习入门系列之六 模式 上篇咱们学习记录了ORACLE数据库中的数据库结构.内存结构和进程等.篇幅 蛤蟆感觉偏多了.这次要休整下,每次笔记不宜太多,不然与书籍有何差别. 我们要保证的是每次做记录都能全部收获全部提升. 上次中我们从整体上把握了下ORACLE系统结构,这次開始我们将涉及到ORACLE数据库的详细方方面面了. 本次就从模式对象入手. 老规矩.先来两个问题: a)        什么事模式 b)       为什么须要 搞清楚这两个问题就可以. 本人邮箱:[email pr

javaweb学习总结(三十二)——JDBC学习入门【转】

原文地址:javaweb学习总结(三十二)——JDBC学习入门 一.JDBC相关概念介绍 1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后 才能够使用声卡和网卡,同样道理,我们安装好数据库之后,我们的应用程序也是不能直接使用数据库的,必须要通过相应的数据库驱动程序,通过驱动程序去和数 据库打交道,如下所示: 1.2.JDBC介绍 SUN公司为了简化.统一对数据库的操作,定义了一套Java操作

JavaSE入门学习4:搭建Java开发环境(二)

在上一篇的博文JavaSE入门学习3:搭建Java开发环境(一)中说到我们配置了Path变量的一种方式,再来说说第 二种配置方式,这种配置方式是必须掌握的. path环境变量配置方式2 我们为什么要将第二种配置形式呢?那第一种的配置方式有什么缺点吗?假设我的计算机上安装了两个JDK,一 个是1.7,一个1.8,我刚才配置的是1.8的,那么我需要配置1.7,需要重新配置Path环境变量,有可能在修改Path环 境变量的同时误删其它的东西,所以不建议使用第一种. path环境变量的参照形配置方式的步

【web开发学习笔记】Hibernate学习总结

hibernate学习笔记 学习笔记部分: 本部分的学习比较容易,代码比较全,也容易理解,可以说是一些记忆性质的东西. 本人在学习过程中没有自己在做笔记,只是参考了网上找的学习笔记,按照那个笔记学习和复习挺快的. 源码中有一些jar包缺失,我在自学的时候也整理了相关的jar包和软件,已经上传,祝大家学习快乐. 相关资源链接: 相关的数据库连接的资源: http://download.csdn.net/detail/licong_carp/7656601 相关的jar包文件: http://dow