1. hibernate.cfg.xml配置详解?
hibernate.cfg.xml Hibernate中最重要的配置文件。
作用:用来初始化hibernate,配置全局参数。
<property name="dialect"> org.hibernate.dialect.SQLServerDialect </property> dialect 方言:用来切换不同的数据 <property name="connection.url"> jdbc:sqlserver://localhost:1433;databaseName=testdb </property> <property name="connection.username">sa</property> <property name="connection.password">123456</property> <property name="connection.driver_class"> com.microsoft.sqlserver.jdbc.SQLServerDriver </property> 配置连接字符串。 <property name="属性名">值</property> 配置Hibernate的全局属性。 show_sql —— 显示执行的SQL语句。 connection.autocommit —— 事务自动提交 <mapping resource="com/zuxia/entity/Userinfo.hbm.xml" /> 用于加载Hibernate中类与表之间的关联关系。
2. 持久化类的属性与配置文件?
<class name="com.zuxia.entity.Userinfo" table="userinfo" schema="dbo" catalog="testdb"> 配置实体类与表之间的关联关系 <id name="uid" type="java.lang.Integer"> <column name="uid" /> <generator class="native" /> </id> 配置表中的主键管理。 <generator class="native" />表示主键的管理策略。 native —— 由数据库自行管理。 identity —— 启用数据库自动增长 sequence —— 提供给Oracle、DB2等大型数据库中到序列。 increment —— 由Hibernate来完成自动增长功能。 foreign —— 引用另外一张表的主键 uuid —— 自动生成一组序列号,作为主键(尽量少使用)。 assigned —— 表示在程序中由Java代码负责管理(默认管理方式)。 注意:Hibernate要求所有的表,必须具有主键。 <property name="uname" type="java.lang.String" insert="true" update="true" not-null="true" > <column name="uname" length="20" default="getdate()" /> </property>
多表之间的关系操作:
一对一关系:<one-to-one>
一对多\多对一关系:<many-to-one>
多这一端: <set name="emps" inverse="true"> <key> <column name="did" /> </key> <one-to-many class="com.zuxia.entity.Emp" /> </set> 一这一端: <many-to-one name="dept" class="com.zuxia.entity.Dept" fetch="select"> <column name="did" /> </many-to-one> fetch="select | join" —— 关联关系的时候,select会启动新的查询,join会使用联合查询 select 与 join对比: select:如果用户需要使用时,才执行查询;否则不查询。 join:始终使用连接查询 lazy="false" :(懒惰)立即查询数据。 cascade="delete" :级联操作(delete,删除关联的数据;放在set端使用,表示级联删除相关数据) inverse="true" :表示有从表来维护关系(不会多产生不必要的update修改语句) 好处:方便级联操作。