前言
本文参考自以下网站
https://www.w3cschool.cn/hibernate/gfhs1iep.html,然后自己做的一个实践纪录。
项目案例
1、初始化项目及jar包拉取
2、mysql数据库内容如下
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for teacher
-- ----------------------------
DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`subject` varchar(255) NOT NULL,
`favorite_food` varchar(255) NOT NULL,
`height` double(30,0) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of teacher
-- ----------------------------
INSERT INTO `teacher` VALUES ('1', 'chen', 'chinese', 'apple', '180');
3、创建hibernate.cfg.xml
hibernate.cfg.xml,这个是配置文件
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- mysql的驱动包 -->
<property name="connection.driver_class">
com.mysql.cj.jdbc.Driver
</property>
<!-- 数据库连接地址,这里数据库以参数形式传入,以;分隔不同参数 -->
<property name="connection.url">
jdbc:mysql://localhost:3306/student?serverTimezone=UTC
</property>
<!-- 数据库账号 -->
<property name="connection.username">
root
</property>
<!-- 数据库密码 -->
<property name="connection.password">
root
</property>
<!-- 数据库连接池 -->
<property name="connection.pool_size">
10
</property>
<!-- 日志文件中是否展示sql -->
<property name="show_sql">
true
</property>
<!-- 设置Hibernate SQL方言 -->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<!-- 其实这个hibernate.hbm2ddl.auto参数的作用主要用于:自动创建|更新|验证数据库表结构。如果不是此方面的需求建议set value="none"。 -->
<!-- create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。 -->
<!-- create-drop : 每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。-->
<!-- update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。 -->
<!-- validate : 每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。-->
<property name="hbm2ddl.auto">
update
</property>
<mapping resource="com/czx/demo