zoukankan      html  css  js  c++  java
  • JavaWeb_(Hibernate框架)Hibernate配置文件hibernate.cfg.xml

    hibernate.cfg.xml配置文件——链接数据库

      hibernate.cfg.xml一定要配置在/src文件目录下

      

        --数据库驱动,url,用户名,密码

        --方言org.hibernate.dialect.MySQL5InnoDBDialect

        --显示并格式化sql语句

        --配置自动生成表

        --orm文件位置

    <hibernate-configuration>
        <!-- 负责初始化     -->
        <session-factory>
     
            <!-- 连接数据库驱动 -->
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <!-- 数据库地址 -->
            <property name="hibernate.connection.url">jdbc:mysql:///hibernatest</property>
            <!-- 数据库用户名 -->
            <property name="hibernate.connection.username">root</property>
            <!-- 数据库密码 -->
            <property name="hibernate.connection.password">123456</property>
            <!-- 配置数据库的方言 -->
            <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
            
            <mapping resource= "com/Gary/domain/User.hbm.xml"/>
             
        </session-factory>
    
    </hibernate-configuration>
    <?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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <!-- 数据库地址 -->
            <property name="hibernate.connection.url">jdbc:mysql:///hibernatest</property>
            <!-- 数据库用户名 -->
            <property name="hibernate.connection.username">root</property>
            <!-- 数据库密码 -->
            <property name="hibernate.connection.password">123456</property>
            
            <!-- 配置数据库的方言 -->
            <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
            
            
            <mapping resource= "com/Gary/domain/User.hbm.xml"/>
                
        </session-factory>
    
    
    </hibernate-configuration>
    hibernate.cfg.xml

      显示sql语句

            <!-- 将hibernate生成的SQL语句打印到控制台上 -->
            <property name="hibernate.show_sql">true</property>
            <!-- 格式化hibernate生成的sql语句 -->
            <property name="hibernate.format_sql">true</property>

      自动生成表

            <!-- hibernate自动创建表 
                create:            自动创建表,每次框架运行都会创建一张新的表,原来的数据将丢失(开发)
                create-drop:    自动建表.每次框架运行结束都会将所有表删除.(开发环境中测试使用)
                update(推荐):        自动生成表,如果表已经存在,则更新数据,如果表不存在,就会创建一张新的表
                validate:               加载hibernate时,验证创建数据库表结构
            
            -->
            <property name="hibernate.hbm2ddl.auto">create</property>

     create:
      每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。

     create-drop :
      每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。


     update:
      最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。


     validate :
      每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

      orm文件实体User.java和User.hbm.xml两个都放置在domain实体层下

      数据库user表,表中的属性都是string类型,id为主键

       

      User,java

        private String id;
        private String username;
        private String password;
        private String name;
        private String email;
        private String telephone;

      User.hbm.xml

    <hibernate-mapping>
    
       <class name="com.Gary.domain.User" table="user">
       <!-- id元素
                   name:实体中的属性
                   colum(可选):数据库的列名
                   type(可选):    填写列(属性)的类型.hibernate会自动检测实体的属性类型.
                            每个类型有三种填法: java类型|hibernate类型|数据库类型
                length(可选):配置数据库中列的长度.
                             默认值:使用数据库类型的最大长度
        -->
               <id name="id" column="id">
                   <!-- 主键生成策略(手动生成) (最后讲)  5种
                       identity:主键自增
                       sequence:oracle中主键生成的策略
                       native:identity+sequence (hibernate会根据连接的数据库自动选择(identity,sequence))
                       uuid:产生随机字符串作为主键,主键必须为String
                       
                       assigned:我们要手动去指定
                    -->
                    <generator class="assigned"></generator>
               </id>
               
               <!-- 
                   property:除了id之外的普通属性
                   name:实体中的属性
                   colum(可选):数据库的列名
                   type(可选):    填写列(属性)的类型.hibernate会自动检测实体的属性类型.
                            每个类型有三种填法: java类型|hibernate类型|数据库类型
                length(可选):配置数据库中列的长度.
                             默认值:使用数据库类型的最大长度
                not-null(可选):配置该属性(列)是否不能为空. 默认值:false
                -->
               
               <property name="username" column="username"></property>
               <property name="password" column="password"></property>
               <property name="name" column="name"></property>
               <property name="email" column="email"></property>
               <property name="telephone" column="telephone"></property>
       </class>
       
    </hibernate-mapping>
    package com.Gary.domain;
    
    public class User {
    
        private String id;
        private String username;
        private String password;
        private String name;
        private String email;
        private String telephone;
        
        
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        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;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this.email = email;
        }
        public String getTelephone() {
            return telephone;
        }
        public void setTelephone(String telephone) {
            this.telephone = telephone;
        }
        
        
        
    }
    User.java
    <?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="com.Gary.domain.User" table="user">
       <!-- id元素
                   name:实体中的属性
                   colum(可选):数据库的列名
                   type(可选):    填写列(属性)的类型.hibernate会自动检测实体的属性类型.
                            每个类型有三种填法: java类型|hibernate类型|数据库类型
                length(可选):配置数据库中列的长度.
                             默认值:使用数据库类型的最大长度
        -->
               <id name="id" column="id">
                   <!-- 主键生成策略(手动生成) (最后讲)  5种
                       identity:主键自增
                       sequence:oracle中主键生成的策略
                       native:identity+sequence (hibernate会根据连接的数据库自动选择(identity,sequence))
                       uuid:产生随机字符串作为主键,主键必须为String
                       
                       assigned:我们要手动去指定
                    -->
                    <generator class="assigned"></generator>
               </id>
               
               <!-- 
                   property:除了id之外的普通属性
                   name:实体中的属性
                   colum(可选):数据库的列名
                   type(可选):    填写列(属性)的类型.hibernate会自动检测实体的属性类型.
                            每个类型有三种填法: java类型|hibernate类型|数据库类型
                length(可选):配置数据库中列的长度.
                             默认值:使用数据库类型的最大长度
                not-null(可选):配置该属性(列)是否不能为空. 默认值:false
                -->
               
               <property name="username" column="username"></property>
               <property name="password" column="password"></property>
               <property name="name" column="name"></property>
               <property name="email" column="email"></property>
               <property name="telephone" column="telephone"></property>
       </class>
       
    </hibernate-mapping>
    User.hbm.xml

      uuid: 通用唯一识别码(Universally Unique Identifier)的缩写,让每个人都可以创建不与其它人冲突的UUID,在这样的情况下,就不需考虑数据库创建时的名称重复问题。

  • 相关阅读:
    (设计模式)组合模式
    redis 集群部署 (linux)
    redis 集群 配置文件
    redis 外部访问配置(bind正确配置)
    (设计模式)桥模式
    (springboot)freemarker(二)
    (springboot)入门(一)
    (设计模式)抽象工厂
    (设计模式)建造者模式
    (设计模式)原型
  • 原文地址:https://www.cnblogs.com/1138720556Gary/p/11848299.html
Copyright © 2011-2022 走看看