<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Hibernate 连接数据库的基本信息 -->
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql:///hibernate01</property>
<!-- Hibernate 的基本配置 -->
<!-- Hibernate 使用的数据库方言 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 运行时是否打印SQL -->
<property name="show_sql">true</property>
<!-- 运行时是否格式化SQL -->
<property name="format_sql">true</property>
<!-- 生产数据表的策略 -->
<property name="hbm2ddl.auto">update</property>
<!-- 需要关联的Hibernate 映射文件 .hbm.xml-->
</hibernate-configuration>
//flush:使数据表中的记录和Session缓存中的对象状态保持一致,为了保持一致,则可能会发送对应的SQL 语句
1.在 Transaction 的commit()方法中:先调用session 的flush 方法,再提交事务
2. flush() 方法可能会发送SQL语句,但不会提交事务
注意: 在未提交事务或显示的调用 session.flush() 方法之前,也有可能会进行 flush() 操作
1). 执行 HQL 或 QBC 查询,会先进行flush() 操作,已得到数据表的最新的记录
2). 若记录的 ID 是由底层数据库使用自增的方式生成的,则在调用 save() 方法后,就会立即发送 INSERT 语句,因为save方法后,必须保证对象的ID是存在的。
//refresh():会强制发送 SELECT 语句,以使session 缓存中对象的状态和数据表中对应的记录保持一致
映射一对多:12n:///set属性
**映射 set 类型的属性,table:set 中的元素对应的记录放在哪个数据表中,该值需要和多对一的多的哪个表的名字一致
**inverse :指定由哪一方来维护关联关系,通常设置为true,以指定由多的一端来维护关联关系
**cascade="delete" 设定级联删除
**ordre-by :在查询时对集合中的元素进行排序, order-by 中使用的是表的字段名,不是持久化类的属性名
inverse:可以在 1 的一端的 set 节点设定inverse="true" 来使 1 这一端放弃维护关联关系
建议舍弟滚 set 的inverse=true 建议先插入 1 的一端,后插入多的一端
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Hibernate 连接数据库的基本信息 -->
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql:///hibernate01</property>
<!-- Hibernate 的基本配置 -->
<!-- Hibernate 使用的数据库方言 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 运行时是否打印SQL -->
<property name="show_sql">true</property>
<!-- 运行时是否格式化SQL -->
<property name="format_sql">true</property>
<!-- 生产数据表的策略 -->
<property name="hbm2ddl.auto">update</property>
<!-- 需要关联的Hibernate 映射文件 .hbm.xml-->
<mapping resource="com/test/test.hbm.xml" />
</hibernate-configuration>
//flush:使数据表中的记录和Session缓存中的对象状态保持一致,为了保持一致,则可能会发送对应的SQL 语句
1.在 Transaction 的commit()方法中:先调用session 的flush 方法,再提交事务
2. flush() 方法可能会发送SQL语句,但不会提交事务
注意: 在未提交事务或显示的调用 session.flush() 方法之前,也有可能会进行 flush() 操作
1). 执行 HQL 或 QBC 查询,会先进行flush() 操作,已得到数据表的最新的记录
2). 若记录的 ID 是由底层数据库使用自增的方式生成的,则在调用 save() 方法后,就会立即发送 INSERT 语句,因为save方法后,必须保证对象的ID是存在的。
//refresh():会强制发送 SELECT 语句,以使session 缓存中对象的状态和数据表中对应的记录保持一致
映射一对多:12n:///set属性
**映射 set 类型的属性,table:set 中的元素对应的记录放在哪个数据表中,该值需要和多对一的多的哪个表的名字一致
**inverse :指定由哪一方来维护关联关系,通常设置为true,以指定由多的一端来维护关联关系
**cascade="delete" 设定级联删除
**ordre-by :在查询时对集合中的元素进行排序, order-by 中使用的是表的字段名,不是持久化类的属性名
inverse:可以在 1 的一端的 set 节点设定inverse="true" 来使 1 这一端放弃维护关联关系
建议舍弟滚 set 的inverse=true 建议先插入 1 的一端,后插入多的一端