最近老师让做个web小应用,大三的时候学习过一点J2EE的东西,也做过一些web相关的XXX管理系统,都是用servlet,jsp这些完成的,虽然勉强能够完成任务,但其中各种代码掺杂在一起,不好看而且维护起来也很麻烦,出了一点问题要调试好久才能解决。这次打算让自己多学一点东西,在项目的架构上我使用了struts2实现了多层代码的分离,在数据库方面,因为以往的经历都需要对连接数据库进行一个封装,里面包含有数据库的连接,记录的添加,查询,修改和删除等操作,每次使用的过程中都需要先实现一个连接对象然后再进行数据库的操作,而面向对象编程中对于不同对象,传统的数据库操作只能够完成一个泛化的任务,不同的对象需要不同的处理方式,所以我们需要一个使用面向对象思想描述数据库的一个框架来完成这样的任务,通过度娘就找到了Hibernate。

那么在这里我将记录下我学习Hibernate框架的过程,以免用过之后又给忘记了。。。

今天我将完成环境的配置以及建立一个简单的Hibernate的工程,使用的开发工具为myeclipse10,数据库为mysql。

在此之前我们要做一些必要的准备:java jdk还有mysql的问题我就不说了,这里只涉及项目配置以及必要代码的编写,我们要先下载Hibernate的jar包,解压后找到这几个文件:hibernate-annotations.jar,hibernate-commons-annotations.jar,hibernate-entitymanager.jar,hibernate-validator.jar,hibernate3.jar。

打开myeclipse后建立一个web项目,将上述的Jar包导入到项目中,这里我自己建立一个数据库lan,里面有一个表叫user,其中包括U_ID,U_NAME,U_PASSWORD三个,我们的任务就是在程序中实现一个User类,完成User类与数据库中user表的映射,并向表中添加一个记录。

一个hibernate的项目有必不可少的两个文件,一个是hibernate.cfg.xml,用于完成项目与数据库的映射。另一个是xxx.hbm.xml,即表与类对象映射的文件,实现类属性与表中属性的映射。

首先要完成项目与数据库的映射关系,在这里需要写一个配置文件来完成,命名为hibernate.cfg.xml,路径放在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
 6 <!-- Generated by MyEclipse Hibernate Tools.                   -->
 7 <hibernate-configuration>
 8
 9     <session-factory>
10         <property name="dialect">
11             org.hibernate.dialect.MySQLDialect
12         </property>
13         <property name="hibernate.connection.url"><!-- 填写数据库路径 -->
14             jdbc:mysql://127.0.0.1:3306/lan
15         </property>
16         <property name="connection.username">root</property><!-- 填写数据库用户名 -->
17         <property name="connection.password">root</property><!-- 填写数据库密码 -->
18         <property name="connection.driver_class"><!-- 填写数据库驱动 -->
19             com.mysql.jdbc.Driver
20         </property>
21         <property name="myeclipse.connection.profile">lan</property>
22         <mapping resource="./User.hbm.xml" /><!-- 表映射文件-->
23
24     </session-factory>
25
26 </hibernate-configuration>

其中的表映射文件我们下面说。

然后写一个User类(注意我们的模型类和表内容必须是一一对应的,即属性之间是一一对应的关系):

 1 class User{
 2     private int id;
 3     private String name;
 4     private String password;
 5
 6     public void setId(int id){
 7         this.id = id;
 8     }
 9     public void setName(String name){
10         this.name = name;
11     }
12     public void setPassword(String password){
13         this.password = password;
14     }
15
16     public int getId(){
17         return id;
18     }
19     public String getName(){
20         return name;
21     }
22     public String getPassword(){
23         return password;
24     }
25 }

其中的数据成员分别对应数据库user表中的三个元素:U_ID,U_NAME,U_PASSWORD。

有了user类,我们下一步就是要实现数据库表user与程序中的模型类User的映射关系了,此时我们需要一个表映射文件:XXX.hbm.xml(本文我们将其命名为user.hbm.xml)

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 4 <!--
 5     Mapping file autogenerated by MyEclipse Persistence Tools
 6 -->
 7 <hibernate-mapping>
 8     <class name="model.User" table="user" catalog="lan">
 9         <id name="id" type="int">
10             <column name="U_ID" length="11" />
11             <generator class="assigned"></generator>
12         </id>
13         <property name="name" type="string">
14             <column name="U_NAME" length="20" not-null="true" />
15         </property>
16         <property name="password" type="string">
17             <column name="U_PASSWORD" length="20" not-null="true" />
18         </property>
19     </class>
20 </hibernate-mapping>

其中class name选项是项目中数据库表对应的类路径,table选项为表名,catalog为数据库名。

完成了上述的准备过程,我们下面就要尝试对项目进行测试了,我们向数据库中添加一个的记录的代码如下:

 1 User user;    //定义一个model
 2 user.setId(1);   //设置user的属性值
 3 user.setName("name");
 4 user.setPassword("password");
 5 Session session;
 6 // 找到Hibernate配置
 7 Configuration config=new Configuration().configure();
 8 //从配置中取出SessionFactory
 9 SessionFactory factory=config.buildSessionFactory();
10 //从SessionFactory中取出一个Session
11 session=factory.openSession();
12 Transaction tran=session.beginTransaction();
13 //执行语句
14 this.session.save(user);
15 //提交事务
16 tran.commit();//

以上的语句实现了向数据库中添加一条记录的效果,第一次写思维有点混乱。。。

转载于:https://www.cnblogs.com/mickeygao/p/3947066.html

Hibernate学习——建立一个简单的Hibernate项目相关推荐

  1. 搭建Vue.js环境,建立一个简单的Vue项目

    基于vue-cli快速构建 Vue是近年来比较火的一个前端框架,所以搭建Vue.js环境,要装webpack,vue-cli,Vue 安装webpack命令如下 $ cnpm install webp ...

  2. tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数

    tensorflow学习笔记二--建立一个简单的神经网络 2016-09-23 16:04 2973人阅读 评论(2) 收藏 举报  分类: tensorflow(4)  目录(?)[+] 本笔记目的 ...

  3. maven学习笔记之IDEA+Maven+Jetty运行一个简单的web项目

    maven学习笔记 一.什么是maven Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Life ...

  4. hibernate二级缓存(三) 自定义实现一个简单的hibernate二级缓存

    hibernate二级缓存(三) 自定义实现一个简单的hibernate二级缓存 前面我们已经提及过hibernate内部为二级缓存的扩展做了很多的实现.我们只需要实现RegionFactoryTem ...

  5. QT学习之C++入门知识准备+建立一个简单的QT界面

    本人使用的QT5.12.10下载地址http://download.qt.io/archive/qt/5.12/5.12.10/ 1.什么是C++ C++是C语言的升级版,在C的基础上加了很多功能,是 ...

  6. 机器人坐标系建立_如何在30分钟内建立一个简单的搜索机器人

    机器人坐标系建立 by Quinn Langille 奎因·兰吉尔(Quinn Langille) 如何在30分钟内建立一个简单的搜索机器人 (How to Build A Simple Search ...

  7. 利用OpenAI Gym建立一个简单的自动驾驶模拟器

    (长按识别上方二维码,报名第29届IEEE IV大会 ) 如何建立一个简单的自动驾驶汽车模拟器?本文作者蒙特利尔大学专注于编译器设计 Maxime Chevalier 博士,在OpenAI Gym环境 ...

  8. bat 删除文件_利用电脑文本文档建立一个简单方便的删除文件的小程序

    删除文不需要的文件或者资料,是日常工作中必定会遇到了. 各种的杀毒软件或者防护软件都具备删除文件的功能,例如360.腾讯电脑管家.这些操作起来其实也不是太麻烦! 不过呢!今天来和大家分享一个更简单的方 ...

  9. 1-3.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之三

    在1-1.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之一 基础上进行如下操作: 所有路由不能全部都在myDjango下的urls.py路由文件中, ...

最新文章

  1. 那些对数据实时性要求高的APP后端是怎么做的
  2. 你想要的生物信息知识全在这——生信宝典文章目录
  3. 染色[SDOI2011]
  4. leaflets + heatmap 加载地图
  5. linux永久改变字符集,Linux 下mysql永久更改字符集
  6. JVM—GC垃圾收集器
  7. Java集合(二):List列表
  8. 统计进仓和出仓数量随时间变化的剩余数量流程图
  9. 怎样把ACCESS导入SQL数据库
  10. iframe:获取iframe中的元素
  11. 45. 正确区分count、find、binary_search、lower_bound、upper_bound和equal_range
  12. python中input的用法霍格沃_欢迎来到霍格沃茨—魔法01 Python 环境安装
  13. CTGU实验6_2-创建还书存储过程
  14. 安装python与编译工具vs code(中文版)和pycharm(中文版)
  15. 购买别人的域名回收别人废弃的域名
  16. 计算机硬件简笔画,电脑的鼠标上色简笔画图片教程步骤
  17. 面向AI应用,美光准备好了!
  18. 表头让你头疼?看这几招解决Pandas读取Excel表头的问题
  19. Stratifyd:了解数据串联五步骤,解锁数据孤岛难题
  20. CRT远程连接出现中文乱码

热门文章

  1. java communal_平台用英语怎么说
  2. 攻击防护手段_如何防护ddos流量攻击?
  3. 只有3%的猿能完全看懂的高端漫画
  4. 微软最强命令行工具 Windows Terminal,强势霸榜GitHub
  5. 三种场景不建议放在关系型数据库中
  6. python一般学多久可以考试_为何Python适合初学者 一般Python要学习多久
  7. 估计很多前端都没学过单元测试~
  8. 利旧IBM X3650m2 安装esxi5.1提供云桌面(备忘)
  9. 算法:把数组排成最小的数
  10. Linux跨平台远程控制