1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE hibernate-configuration PUBLIC
 3     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 4     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 5 
 6 <hibernate-configuration>
 7     <session-factory>
 8         <!-- 注册驱动 -->
 9         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
10         <!-- mysql的用户名 -->
11         <property name="connection.username">root</property>
12         <!-- mysql的用户密码 -->
13         <property name="connection.password">123456</property>
14         <!-- 连接mysql的某库 -->
15         <property name="connection.url">jdbc:mysql://localhost:3306/user</property>
16         <!-- 控制台输出sql -->
17         <property name="show_sql">true</property>
18         <!-- 格式化输出的sql -->
19         <property name="format_sql">true</property>
20         <!-- 自动提交事务 -->
21         <property name="connection.autocommit">true</property>
22         <!-- 创建sql表
23             update:如果没有表,则创建一个。如果有表,而且表结构一致,那么不改变表。如果表结构不一样,会添加sql表缺少的列,多余的也不会删除。
24             create:不管sql表有没有存在,都会重新创建表。
25             create-drop:在create的基础上,每次关闭虚拟机时都会把表删除了。
26             validate:效验sql表,如果一致,则没有反应,如果不一致了,会抛出异常。
27          -->
28         <property name="hbm2ddl.auto">update</property>
29         <!-- 将Session与线程绑定=> 只有配置了该配置,才能使用getCurrentSession -->
30         <property name="current_session_context_class">thread</property>
31         <!-- 数据库方言配置 -->
32         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
33         <!-- 导入映射文件 -->
34         <mapping resource="com/xiaostudy/demo/User.hbm.xml"/>
35     </session-factory>
36 </hibernate-configuration>

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC 
 3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5     
 6     <!-- 导入bean所在的包路径,如果这里没有写,那么下面用到的类就要写全路径 -->
 7 <hibernate-mapping package="com.xiaostudy.demo">
 8     <!-- 把bean中的类名和mysql中的表名对应,
 9         dynamic-insert不写的话默认是false,这里设置为true,意思就是插入到数据库时,为null的数据就不要插入
10         dynamic-update不写的话也是默认false,这里设置为true,意思就是当改变数据库的数据时,不更改的列不用操作
11      -->
12     <class name="User" table="users" dynamic-insert="true" dynamic-update="true">
13         <!-- bean中id和mysql中主键对应 -->
14         <id name="id" column="id">
15             <!-- generator:主键生成策略
16                      1.increment  数据库自己生成主键. 先从数据库中查询最大的ID值,将ID值加1作为新的主键
17                     2.identity  依赖于数据的主键自增功能
18                     3.sequence    序列,依赖于数据中的序列功能(Oracle).
19                     4.hilo(纯了解,永远用不到) : Hibernate自己实现序列的算法,自己生成主键. (hilo算法 )
20                     5.native 自动根据数据库判断,三选一. identity|sequence|hilo
21                     6.uuid  生成32位的不重复随机字符串当做主键
22                     7.assigned 自己指定主键值. 表的主键是自然主键时使用.
23                  
24              -->
25             <generator class="native"></generator>
26         </id>
27         <!-- bean中的属性和mysql中的字段对应 -->
28         <property name="username" column="username"></property>
29         <property name="password" column="password"></property>
30     </class>
31 </hibernate-mapping>

 

HibernateUtils.java工具类

 1 package com.xiaostudy.util;
 2 
 3 import org.hibernate.SessionFactory;
 4 import org.hibernate.cfg.Configuration;
 5 import org.hibernate.classic.Session;
 6 
 7 public class HibernateUtils {
 8     // 定义一个SessionFactory
 9     private static SessionFactory sessionFactory;
10 
11     // 静态代码块,当类加载时,会只执行一次
12     static {
13         // 加载配置文件,这里没有参数,是因为hibernate.cfg.xml文件是默认放在src目录下
14         Configuration conf = new Configuration().configure();
15         // 通过配置文件获取一个SessionFactory
16         sessionFactory = conf.buildSessionFactory();
17         // 当退出java虚拟机时,自动关闭资源
18         Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
19             @Override
20             public void run() {
21                 sessionFactory.close();
22             }
23         }));
24     }
25 
26     // 每次都获取新的一个Session
27     public static Session openSession() {
28         return sessionFactory.openSession();
29     }
30 
31     // 获取当前线程的Session,多用于处理事务
32     public static Session getCurrentSession() {
33         return sessionFactory.getCurrentSession();
34     }
35 
36 }

建议参考文章:https://www.cnblogs.com/konrad/p/6391962.html