概述
今天我们来学习hibernate,当我们想把一个数据存在数据库里,首先要在客户端(Client)new 出一个对象(假设为Student),我们需要连接数据库,使用JDBC来对Student进行操作。
这里要注意的是,在面向对象编程中,我们使用的sql语句并不是面向对象的语言。
而采用hibernate我们就不必使用JDBC了,我们的Student对象直接和hibernate打交道(而不需要再写sql语句).
相关类关系如下图所示,先简单做一个了解:
资源准备
很多公司喜欢使用Annotation开发,所以我们的学习风格依然是重Annotation轻xml配置文件。
准备阶段我们需要下载三个hibernate资源包。
除此之外,我们还需要配合两个文件学习。
第一个是在:hibernate-distribution-3.6.10.Finaldocumentationmanualzh-CNhtml_singleindex.html
这个文件我们是我们学习hibernate的参考文档(简称为文件1)
第二个是:hibernate-search-5.8.0.Finaldocsreferencezh-CNhtml_singleindex.html
这个文件是我们学习hibernate-annotation的参考文档(简称为文件2)
第一个hibernate程序:HelloWorld
新建一个简单的java项目,名为: Hibernate_0100_HelloWorld
如果我们需要导入多个jar包(同一系列),我们可以:
window–>java–>build path–>user libraries也就是用户自定义的jar包集合。
以hibernate为例,点击new–>定义名称为hibernate–>add jars(添加自定义的jar包)–>依次导入:hibernate3.jar, hibernate-distributionlibrequired中的所有包,slf4j-nop-1.6.jar
接着如下图所示,我们点击项目Hibernate_0100_HelloWorld,右键bulid path–>user libraries–>UserLibrary–>hibernate 选中确定即可
我们需要跟数据库建立联系,所以还需要再导入一个jar包:mysql-connector-java-3.1.13-bin.jar以便在mysql中建立对应的表。
1)打开mysql,创建数据库hibernate.
2)建立对应的表
3)在Hibernate_0100_HelloWorld中创建Student.java
例1:
package
4)创建测试类StudenTest
例2:
package
5)在文件1中找到如下代码,创建配置文件:hibernate.cfg.xml(文件名约定俗成,尽量不要更改),并粘贴。
例3:
<?xml version='1.0' encoding='utf-8'?>
6)修改hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
- 设置Student类/属性和数据库表/字段之间的对应关系:建立Student.hbm.xml(Student.java放在同一个包下)
查阅文件1:关于映射文件的描述,我们可以对此创建出如下配置文件。
例4:
<?xml version="1.0"?>
- 修改hibernate.cfg.xml的mapping标签,链接student.hbm.xml的位置。
例5:
<mapping resource="com/hibernate/model/Student.hbm.xml"/>
- 修改测试类studentTest.java
public
10)运行测试类结果如下:
Hibernate: insert into Student (name, age, id) values (?, ?, ?)
11)在数据库中查询后结果如下:
说明s1对象已经插入数据库中。
第二个hibernate程序:建立Annotation(注解)版本的HelloWorld
在hibernate3之后支持annotation.
1)创建一个Teacher.java类
例6:
public
2)在数据库中建立好teacher表
3) 导入annotation相关包
- 在Teacher.java上添加注解@Entity
例7:Teacher.java
import
由包路径可知,此注解并不属于hibernate,而是一个标准,hibernate实现了它,并且hibernate实现的比原来的更好。“三流公司买产品,二流公司卖服务,一流公司卖标准。”所以此标准定义的和hibernate非常符合。
5)在Teacher.java上添加注解@Id,代表数据库中的主键字段。
例8:Teacher.java
@Id
6)添加对应在hibernate.cfg.xml的mapping标签(可以跟之前使用配置文件配置作对比)
例9:hibernate.cfg.xml
<!-- 使用配置文件 -->
<mapping resource="com/hibernate/model/Student.hbm.xml"/>
<!-- 使用注解 -->
<mapping class="com.hibernate.model.Teacher"/>
7)测试类TeacherTest.java
例10:
public
运行测试类,结果如下:
Hibernate: insert into Teacher (name, title, id) values (?, ?, ?)
例11:在数据库中查询结果如下图所示
常见的一个小问题:
@不给提示:content assist --> activation -->加上@
What is and Why O/R Mapping
- 相比较JDBC操作数据库,流程大大简化。
- Sql语句本身并不是面向对象的。
- 可以在对象和关系表之间建立关联来简化编程。
- O/R Mapping 可以跨数据库平台
- O/R Mapping 可以简化编程
模拟实现hibernate
创建出一个新的Java project:Hibernate_0200_OR_Mapping_Simulation,导入mysql-connector-java相关包。
第一步:创建Student.java
例12:Student.java
public
例13:StudentTest.java
public
例14:Session.java
public
运行测试类,结果如下:
insert
SQL语句成功打印出来,接下来我们需要连接数据库。
第二步:连接数据库
- 在数据库中新建table _Student,如下图所示:
- 修改Session.java如下
例15:
public
例16:StudentTest.java
public
运行测试类,控制台无结果。
在mysql中查询结果如下,说明我们插入成功。以后我们再插入Student对象就不必写sql语句了!
总结
本章我们讲了在hibernate中使用xml和annotation配置的流程,模拟了hibernate原理,
希望大家通过这些案例理解了什么是O/R Mapping.
最后
以上就是舒适指甲油为你收集整理的hibernate jar包_聊聊程序员-day2.1 聊一聊Hibernate的全部内容,希望文章能够帮你解决hibernate jar包_聊聊程序员-day2.1 聊一聊Hibernate所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复