第一章 你好Hibernate4
目录
第二节: Hibernate 通过操作关系对象 实现 关系型数据库
总结:
名称:
项目的hibernat配置文件
对象的hibernat配置文件
相关链接:
(1)Eclipse IDE 常见快捷键
https://blog.****.net/HDZ1821/article/details/104377004
(2)在哪下载Mysql数据库的JDBC驱动jar包
https://blog.****.net/HDZ1821/article/details/104373946
(3)hibernate第一章配置文件:
https://download.****.net/download/HDZ1821/12168281
(目前因为我在****进行文件提交,以供下载,暂时还在审核,审核通过了我再附上链接
嗯啊!审核已经通过啦!)
其包含有:
第一节:Hibernate 简介
第二节: Hibernate 通过操作关系对象 实现 关系型数据库
(1)下载hibernate:
打开hibernate官网,下载出现的第一个,Hibernate ORM.(官网现在更新到了6.0版本)
(2)新建一个项目包: (文件名可以随心取)
【File】-【New】-【Java project】
Project name : Hibernate01
(3)添加hibernate的驱动包:
在Hibernate文件夹下
右键【Hibernate01】-【New】-【Folder】
Folder name : hibernate+版本号 -【Finish】
解压并且打开刚才下载好的Hibernate ORM,进入其 hibernate-release-5.4.11.Final\lib\required文件夹下,将其文件夹下所有文件选中,复制。
(lib\required 这个文件路径下存储着hibernate的核心包)
将复制的所有文件粘贴进 刚才新建的 【hibernate+版本号】 文件夹下。
(4)build path: (使其添加到项目里面去。)
在复制粘贴完成之后,左键查看 【hibernate+版本号】 文件夹,会发现已经将多有核心包粘贴进去了。
全选粘贴进去的包,右键。
【Build Path】-【Add to Build Path】
(5)连接数据库必须还要有它的驱动包:
右键【Hibernate01】文件夹 - 【New】 - 【Folder】
Folder name : mysql
然后需要将Mysql数据库的JDBC驱动jar包放在这个文件夹下。
mysql数据库的jdbc驱动jar包在哪里下载 详情请看我这篇博客:
https://blog.****.net/HDZ1821/article/details/104373946
然后将这个包复制粘贴进了我们刚才所创建的文件夹之后,
右键 mysql-connector-java-8.0.19.jar ,【Build Path】 - 【Add Build Path】
使其添加到项目中去。
(6)介绍hibernate配置文件:
(以后我决定叫这个配置文件叫 = = —— 项目的 hibernate 配置文件。原因是之后也有hibernate的配置文件,我怕弄混淆。)
hibernate.cfg.xml
作用:配置整个项目。
因为:如果要链接数据库的话,就必须要有驱动啊,链接地址,用户名密码
如何找到hibernate配置文件,就需要将路径定位到刚才下载好的hibernate包下,然后通过windows的搜索框,进行搜索:
搜索内容为: .cfg.xml
进而我们会发现,搜索内容会跳出特别多一模一样名字的该文件,任意选中其中一个进行打开,会发现其中内容如下:
(注:图片中该文件被我加了编号,所以名字不同,因为我选了几个放在了同一个文件夹中,需要不同命名。)
可以看到其中的内容如上,当然了,不同文件有不同的内容。
随手再打开一个hibernate自带的该文件,文件内容为:
(7)配置hibernate配置文件:
(这就是我之前说的那个混淆点。所以我决定以后把类似的文件都叫做: 对象的hibernate配置文件 因为它是根据类对象的配置文件,)
输入代码:使其配置成这样:
创建数据库:
将配置完毕的该文件,复制粘贴进【Hibernate01/src】下。
到目前为止,该项目图如下:
【注】:
到了后面,我开始运行第一个项目的时候,我发现有点不对劲。感觉是mysql和hibernate用的版本太高了,导致出了一些问题。
我暂时还不知道是哪里出了问题,但是我把版本都换成了hibernate 4,mysql 的connector jar包版本也换了,换成了3.1.12 ,问题暂时被我解决了,虽然不太清楚原因,推测是语法格式变动,各种东西的使用用法变动。
相对应的hibernate配置文件和mysql的jar包我都会给个链接全部上传。
经过更改之后的文件目录为:
那个突然有感叹号emmm。是我更改名字时候,给我新建了一个hibernate4出来但是hibernate5并没有因此而删除掉,我强行删除了hibernate5文件夹之后,给hibernate4里面的文件都添加了注入,使其添加到了项目中去。
感觉上应该是没问题的。
因为之后执行也成功了。
因为我之后使用的是hibernate4,所以其文件的规范格式为,当然了,可以根据需要进行改动。:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-mapping package="">
</hibernate-mapping>
配置文件源代码:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!--数据库连接设置 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<!-- 方言 -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- 控制台显示SQL -->
<property name="show_sql">true</property>
<!-- 自动更新表结构 -->
<property name="hbm2ddl.auto">update</property>
</session-factory>
</hibernate-configuration>
(8)要用hibernate,就得建立对象(对象关系映射)
【Hibernate01/src】-【New】-【Class】
Package:model
Name:Student
其中用到了快速get/set方法: 关于eclipse中常见快捷键,请看一下我的这篇文章:
https://blog.****.net/HDZ1821/article/details/104377004
(9)已建立对象的hibernate配置文件:
上面我建立了一个Student类,类里面有student对象,现在我们需要建立对应student的hibernate配置文件。
hibernate配置文件的后缀,设置为: .hbm.xml
其实际上就是一个xml文件,前面再加.hbm修饰,目的是容易看出来它是hibernate配置文件。
【New】-【other】- 【XML】 - 【XML File】- 【Next】
Flie name : Student.hbm.xml
该文件:
源代码:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="model">
<class name="Student" table="t_student">
<id name="id" column="stuId">
<generator class="native"></generator>
</id>
<property name="name"></property>
</class>
</hibernate-mapping>
这里弄好了之后,
还应该进入之前的hibernate配置整个项目的配置文件中进行添加路径:
有这个配置文件之后,如果一旦发现数据库里没有那个叫t_student的表
然后又发现表的结构是,自动添加与更新表时,
mysql数据库就会创建出在Eclipse IDE 下建立的这张表了。
然后我们就需要写测试了。
(9)测试Hibernate!
右键【src】-【New】-【Class】
Package : service
Name : StudentTest
其文件内容如下:
其中快捷键用到的是:多行快捷注释。(之后我会把我文章里面所有引用的文章都放到最开始去说明- -真累死我了。。。)
源代码:
package service;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import model.Student;
public class StudentTest {
public static void main(String[] args) {
Configuration configuration=new Configuration().configure(); // 实例化配置文件
ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build(); // 实例化服务登记
SessionFactory sessionFactory=configuration.buildSessionFactory(serviceRegistry); // 获取Session工厂
Session session=sessionFactory.openSession(); // 生成一个session
session.beginTransaction(); // 开启事务
// Student s=new Student();
// s.setName("张三");
// session.save(s);
session.getTransaction().commit(); // 提交事务
session.close(); // 关闭session
sessionFactory.close(); // 关闭session工厂
}
}
(10)运行程序:StudentTest.java
从上看到下浏览console,其并未报错:(但是之前hibernate是高版本时,mysql也是高版本时,它报错了- -所以我才换成了低版本的。)
然后现在打开数据库软件:sqlyog
就会发现它自动生成了个表了!:
其根据native属性实现了一种主键自增机制。
并且在我没有注解掉中间那几行的时候- -我运行了多次这个程序,导致了- -插入了很多次的张三:
再加上之前我们:
所以说会显示这个:
这样子就实现了通过操作关系对象实现了关系型数据库的操作