hibernate配置文件

  • 将对象映射为数据库的关系可以采用注解或配置文件,我们先接触配置文件
  • 配置文件默认命名为hibernate.cfg.xml,改名的话需要另外指定;默认位置为src下。
  • 先在以上命名文件中配置好数据库连接、方言设置,指定是否打印sql语句、更新表结构方式的方法和映射文件

    <?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="connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
            <property name="connection.username">root</property>
            <property name="connection.password">123456</property>
    
            <!-- 方言 -->
            <property name="dialect">org.hiberate.dialect.MySQL5Dialect</property>
    
            <!-- 控制台显示sql -->
            <property name="show_sql">true</property>
    
            <!-- 自动更新表结构 -->
            <property name="hbm2ddl.auto">update</property>
            <!--  
            validate【每次运行会校验数据与数据库的字段类型是否相同,不同则报错】、
            create【每次运行程序,没有表格会新建,表内有数据会清空】、
            create-drop【每次程序结束时会清空表】、
            update【每次运行程序,没有表格会新建表格,表内有数据不会清空,只会更新表结构,但是原有的字段不会删掉,就算是把该字段改名了也还是会保存原有这个字段,所以易出现相同意义字段重复情况;即使表结构改变了但原有的记录不会删除】、)
            -->
    
            <!-- 指定文件进行对象关系映射 -->
            <mapping resource="com/java1234/model/Student.hbm.xml"/>
    
        </session-factory>
    
    </hibernate-configuration>
    

    配置映射文件

  • 命名、位置随意,将pojo和表对应。
  • 一个pojo对应一个映射文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.java1234.model">

    <class name="Student" table="t_student"> <!-- 要映射的对象为Student,表为t_student -->

        <!-- 主键配置用标签id -->
        <id name="id" column="stuId">
            <generator class="native"></generator> <!-- 生成策略为按照本地,这里是自增 -->
        </id>

        <!-- 其他字段配置用property标签 -->
        <property name="name"></property> <!-- 省略column表示字段和属性名相同 -->
    </class>

</hibernate-mapping>

主键生成策略:

- increment:由hibernate自动以递增的方式生成主键(插入数据前查询最大主键并自动加一)
- identity:由底层数据库自动生成标识符(MySQL是自增)
- native:根据底层数据库自动选择以上方式(sql是identity)

代码实例

  • eclipse->HibernateDDL