hibernate中,对对象关系的映射处理估计是最让人迷惑和头疼的,特别是cascade和inverse属性的使用,不知已经杀死了我多少个脑细胞了,好记性永远比不上烂笔头,为了能节省自己的脑细胞,降低猝死的出现概率,暂且在此记录一下自己的学习内容,以便日后查阅:
实体对象关系说明:
1、用户类(user)->tb_pms_user
2、用户组(group)->tb_pms_group
其中,一个用户组可以包含多个用户,一个用户可以加入多个用户组,多对多关系。
Spring的配置文件:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:aop="http://www.springframework.org/schema/aop" 5 xmlns:tx="http://www.springframework.org/schema/tx" 6 xmlns:jee="http://www.springframework.org/schema/jee" 7 xsi:schemaLocation=" 8 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd 9 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd 10 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd 11 http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.0.xsd"> 12 13 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 14 <property name="locations"> 15 <list> 16 <value>/WEB-INF/deploy/pms/app-config/jdbc.properties</value> 17 </list> 18 </property> 19 </bean> 20 21 22 <!-- 配置数据原 --> 23 <bean id="dataSource" 24 class="org.apache.commons.dbcp.BasicDataSource"> 25 <property name="driverClassName" 26 value="com.mysql.jdbc.Driver"> 27 </property> 28 <property name="url" value="jdbc:mysql://localhost:3306/pms"></property> 29 <property name="username" value="root"></property> 30 <property name="password" value="1qaz!QAZ"></property> 31 </bean> 32 33 <!-- 配置session工厂 --> 34 <bean id="sessionFactory" 35 class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 36 <property name="dataSource"> 37 <ref bean="dataSource" /> 38 </property> 39 <property name="mappingResources"> 40 <list> 41 <value>com/pms/entity/TbPmsGroup.hbm.xml</value> 42 <value>com/pms/entity/TbPmsUser.hbm.xml</value> 43 </list> 44 </property> 45 <property name="hibernateProperties"> 46 <props> 47 <prop key="hibernate.dialect"> 48 org.hibernate.dialect.MySQLDialect 49 </prop> 50 <prop key="hibernate.show_sql">true</prop> 51 </props> 52 </property> 53 </bean> 54 <!-- spring jdbcTemplate --> 55 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 56 <property name="dataSource" ref="dataSource"></property> 57 </bean> 58 59 <!-- 事务管理器 --> 60 <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 61 <property name="sessionFactory"> 62 <ref local="sessionFactory" /> 63 </property> 64 </bean> 65 <!-- 事务代理拦截器的配置 --> 66 <bean id="baseTransactionProxy" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> 67 <property name="transactionManager"> 68 <ref bean="transactionManager" /> 69 </property> 70 <property name="transactionAttributes"> 71 <props> 72 <prop key="insert*">PROPAGATION_REQUIRED</prop> 73 <prop key="update*">PROPAGATION_REQUIRED</prop> 74 <prop key="delete*">PROPAGATION_REQUIRED</prop> 75 <prop key="*">PROPAGATION_REQUIRED,readOnly</prop> 76 </props> 77 </property> 78 </bean> 79 80 <!-- 日志bean 81 <bean /> 82 83 84 <aop:config> 85 <aop:aspect > 86 <aop:pointcut /> 87 <aop:after method="addLog" pointcut-ref="servicePointCut"/> 88 </aop:aspect> 89 </aop:config> 90 --> 91 <bean id="baseDao" class="com.pms.base.BaseDao"> 92 <property name="sessionFactory"> 93 <ref bean="sessionFactory"/> 94 </property> 95 <property name="jdbcTemplate"> 96 <ref bean="jdbcTemplate"/> 97 </property> 98 </bean> 99 100 101 102 <bean id="userDao" class="com.pms.dao.impl.TbPmsUserDaoImpl" parent="baseDao"> 103 </bean> 104 105 <bean id="groupDao" class="com.pms.dao.impl.TbPmsGroupDaoImpl" parent="baseDao"> 106 </bean> 107 108 109 <bean id="userService" class="com.pms.service.impl.UserServiceImpl"> 110 <property name="userDao"> 111 <ref bean="userDao"/> 112 </property> 113 </bean> 114 115 <bean id="groupService" class="com.pms.service.impl.GroupServiceImpl"> 116 <property name="groupDao"> 117 <ref bean="groupDao"/> 118 </property> 119 </bean> 120 121 </beans>