目录
Spring与Hibernate整合(将sessionFactory对象交给spring容器管理)
SSH之单独整合Hibernate
-
单独配置Hibernate
导入实体类
public class User {
private Long user_id;
private String user_code;
private String user_name;
private String user_password;
private Character user_state;
//多对多
private Set<Role> roles = new HashSet<Role>();
//...
}
配置映射文件
<!-- 实体与表文件映射配置 -->
<hibernate-mapping package="com.mark.domain">
<class name="Customer" table="cst_customer">
<!-- 实体与主键映射 -->
<id name="cust_id" column="cust_id">
<!-- 主键生成策略 -->
<generator class="native"></generator>
</id>
<!-- 实体与表普通列映射 -->
<property name="cust_name" column="cust_name"></property>
<property name="cust_user_id" column="cust_user_id"></property>
<property name="cust_create_id" column="cust_create_id"></property>
<property name="cust_source" column="cust_source"></property>
<property name="cust_industry" column="cust_industry"></property>
<property name="cust_level" column="cust_level"></property>
<property name="cust_linkman" column="cust_linkman"></property>
<property name="cust_phone" column="cust_phone"></property>
<property name="cust_mobile" column="cust_mobile"></property>
<!-- 配置多的一方关联对象 -->
<!-- set标签:
* name属性 :多的一方集合的属性名称
* cascade属性 :save-update(级联保存更新)、delete(级联删除)、all(前两者之和)-->
<set name="linkmans" cascade="save-update">
<!-- set标签:
* name属性:外键名称 -->
<key column="lkm_cust_id"></key>
<!-- one-to-many标签:
* name属性:多的一方类全路径
-->
<one-to-many class="com.mark.domain.Linkman"/>
</set>
</class>
</hibernate-mapping>
主配置文件
<!-- Hibernate核心文件配置 -->
<hibernate-configuration>
<session-factory>
<!-- 5个必要数据连接配置 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///crm</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<!--Hibernate方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 3个可选数据库操作配置 -->
<!--Hibernate显示SQL语句 -->
<property name="hibernate.show_sql">true</property>
<!--Hibernate格式化SQL语句 -->
<property name="hibernate.format_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<!--Hibernate加载映射 -->
<mapping resource="com/mark/domain/Customer.hbm.xml"/>
<mapping resource="com/mark/domain/Linkman.hbm.xml"/>
<mapping resource="com/mark/domain/User.hbm.xml"/>
<mapping resource="com/mark/domain/Role.hbm.xml"/>
</session-factory>
</hibernate-configuration>
-
Spring与Hibernate整合(将sessionFactory对象交给spring容器管理)
将sessionFactory配置到Spring容器中
方案一:使用hibernate.cfg.xml配置信息
<bean name="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean" >
<!-- 方案一:使用Hibernate。cfg.xml配置信息 -->
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
</bean>
方案二:在spring配置中配置Hibernate.cfg.xml配置信息
<!-- 方案二:在spring配置中配置Hibernate.cfg.xml配置信息 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop>
<prop key="hibernate.connection.url">jdbc:mysql:///crm</prop>
<prop key="hibernate.connection.username">root</prop>
<prop key="hibernate.connection.password">root</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update </prop>
</props>
</property>
<!-- 引入映射文件 -->
<property name="mappingDirectoryLocations" value="classpath:com/mark/domain"></property>