一对多使用区县和街道举例:
街道的实体
private Integer JDId; //街道的id
private String JDName; //街道名
private QuXian quXian; //属于哪个区县
区县的实体
private Integer QXId; //区县的id
private String QXName; //区县的名字
private Set<JieDao> jieDaoSet = new HashSet<>(); //区县里面的街道
都需要生成相应的get set方法
hibernate.cfg.xml配置
<?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>
<!--<property name="hibernate.bytecode.use_reflection_optimizer">false</property>-->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">admin</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3308/hibernate-train</property>
<property name="hibernate.connection.username">XXXX</property>
<!--数据库方言,用于指定使用的sql从属于哪个数据库-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!--为true时显示SQL语句-->
<property name="show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property> <!-- 开启自动建表 -->
<mapping resource="quxian.hbm.xml"></mapping>
<mapping resource="jiedao.hbm.xml"></mapping>
</session-factory>
</hibernate-configuration>
区县的hmb.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="entity.QuXian" table="quxian">
<id name="QXId" column="qx_id" type="integer" unsaved-value="null">
<generator class="assigned"/>
</id>
<property name="QXName" column="qx_name" type="string"/>
<!--inverse反转,把控制权有一方转给多方,多方在关联字段增加时自动添加-->
<set name="jieDaoSet" cascade="save-update" inverse="true">
<key column="qx_id"/>
<one-to-many class="entity.JieDao"/>
</set>
</class>
</hibernate-mapping>
街道的.hmb.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="entity.JieDao" table="jiedao">
<id name="JDId" column="jd_id" type="integer">
<generator class="assigned"/>
</id>
<property name="JDName" column="jd_name" type="string"/>
<many-to-one name="quXian" class="entity.QuXian" column="qx_id"/>
</class>
</hibernate-mapping>
开启自动建表后,建立完实体就直接可以开始测试了
注意inverse=“true” 和"false"的区别
inverse="true"与inverse="false"的区别
如果配置不当,会影响性能的使用
区别在于保存数据的时候
当设置为“true”时:会直接保存不会修改 -----性能好
当设置为“false”时:会保存后再修改 ------性能差