zoukankan      html  css  js  c++  java
  • hibernate配置文件的详解

     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


  • 相关阅读:
    Spring的IOC原理(转载)
    谈谈对Spring IOC的理解
    Servlet3.0学习总结(四)——使用注解标注监听器(Listener)
    Servlet3.0学习总结(三)——基于Servlet3.0的文件上传
    Servlet3.0学习总结(二)——使用注解标注过滤器(Filter)
    Servlet3.0学习总结(一)——使用注解标注Servlet
    XML学习总结(二)——XML入门
    XML学习总结(一)——XML介绍
    孤傲苍狼的博客园
    android 布局之滑动探究 scrollTo 和 scrollBy 方法使用说明
  • 原文地址:https://www.cnblogs.com/xiaostudy/p/9514479.html
Copyright © 2011-2022 走看看