前言:本次使用的hibernate框架为idea自动创建的版本:5.3.7.Final 本机的mysql版本为 8.0.11
下载的mysql 驱动程序版本为 mysql-connector-java-8.0.11.jar
一、Hibernate开发的环境搭建
1.使用idea工具创建hibernate项目
然后一路next,按照自己的需要填写项目名称,项目存放的路径。
随后创建成功hibernate项目。
2、加入数据库驱动。下面例子中主要采用MySQL数据库进行演示,所以也要导入MySQL的JDBC驱动
注:此外需要注意到的是数据库的时区设置,mysql默认使用的时区为美国时间,如果不修改在连接数据库时可能会出现
The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone的错误,解决方法如下:
2.1进入cmd程序,使用命令 mysql -u root -p 登录进数据库(注意需要在mysql/bin目录下)
2.2使用命令show variables like '%time_zone%';查看当前的系统时区设置,默认如图:
2.3 使用命令set global time_zone='+8:00';设置时区
2.4随后再次查看时区设置,如图为设置成功。(如果还是System的话,关掉重新打开输入密码show一下,一般就是+08:00了)
3、idea已经自动生成了hibernate.cfg.xml配置文件,根据需要做自己的修改。
二.配置文件的书写
以下附上相关的配置文件
1.hibernate.cfg.xml(此为核心配置文件)
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.url">jdbc:mysql://localhost:3306/hibernate_first_test</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.username">root</property>
<property name="connection.password">123123123</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL8Dialect</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping resource="User.hbm.xml"/>
<!-- DB schema will be updated if needed -->
<!-- <property name="hbm2ddl.auto">update</property> -->
</session-factory>
</hibernate-configuration>
注意图中标红位置代码,若书写不准确可能会出现Table 'hibernate_first_test.user' doesn't exist的错误
图中标红处应该去hibernate-core包下的org.hibernate.dialect中寻找适合自己mysql版本的类名
2.user.hbm.xml(映射文件)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="User">
<id name="userId">
<generator class="native"></generator>
</id>
<property name="userName"/>
<property name="passWord"/>
</class>
</hibernate-mapping>
注意文中标红的配置,如果不写可能会出现
ids for this class must be manually assigned before calling save() 的错误
3.简单的user类(javaBean)
public class User {
private Integer userId;
private String userName;
private String passWord;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
}
4.启动程序类(注意导包为hibernate下的包)
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class TestApp {
public static void main(String[] args) {
User user = new User();
user.setUserName("yu");
user.setPassWord("123");
Configuration config = new Configuration().configure();
SessionFactory factory = config.buildSessionFactory();
Session session = factory.openSession();
Transaction transaction = session.beginTransaction();
session.save(user);
transaction.commit();
session.close();
factory.close();
}
}
5.右键run此main函数就可以连接到数据库并且创建表了。