首页 > 代码库 > Spring中的mappingResources和mappingDirectoryLocations
Spring中的mappingResources和mappingDirectoryLocations
今天使用Spring+Hibernate进行事务管理,按照顺序也就是配置,DataSource,Sessionfactory,事务管理器以及拦截器。
DateSource可以直接使用Hibernate的配置文件,也可以单独配置,但是却遇到了莫名其妙的问题.
操作步骤如下:
1,利用MyEclipse 2014,建立Java工程;
2,添加Spring库,此时创建了Spring的配置文件applicationContext.xml;
3,添加Hibernate库,此时工程已经识别了Spring的配置文件,可以选择自己建立一个Hibernate的配置文件,也可以不用建立;我选择没有创建。
4,单独创建Hibernate的配置文件(我想尝试两种方法配置)
5,连接数据库Mysql,利用Hibernate反向工程生成每个表的hibernate的配置文件。
6在applicationContext.xml中进行配置。
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8" /> <property name="username" value="root" /> <property name="password" value="missyou" /> <!--maxActive: 最大连接数量 --> <property name="maxActive" value="150" /> <!--minIdle: 最小空闲连接 --> <property name="minIdle" value="5" /> <!--maxIdle: 最大空闲连接 --> <property name="maxIdle" value="20" /> <!--initialSize: 初始化连接 --> <property name="initialSize" value="30" /> <!-- 连接被泄露时是否打印 --> <property name="logAbandoned" value="true" /> <!--removeAbandoned: 是否自动回收超时连接 --> <property name="removeAbandoned" value="true" /> <!--removeAbandonedTimeout: 超时时间(以秒数为单位) --> <property name="removeAbandonedTimeout" value="10" /> <!--maxWait: 超时等待时间以毫秒为单位 1000等于60秒 --> <property name="maxWait" value="1000" /> <!-- 在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位. --> <property name="timeBetweenEvictionRunsMillis" value="10000" /> <!-- 在每次空闲连接回收器线程(如果有)运行时检查的连接数量 --> <property name="numTestsPerEvictionRun" value="10" /> <!-- 1000 * 60 * 30 连接在池中保持空闲而不被空闲连接回收器线程 --> <property name="minEvictableIdleTimeMillis" value="10000" /> <property name="validationQuery" value="SELECT NOW() FROM DUAL" /> </bean>
<bean id="sessionFactoryt" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <!-- 也可以这样配 --> <!-- <property name="configLocation"> <value>classpath:hibernate.cfg.xml</value> </property> --> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.SQLServerDialect <!-- 数据库所用的sql语句 --> </prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.current_session_context_class">thread</prop> <prop key="hibernate.cache.use_second_level_cache">true</prop> <!--启用二级缓存 --> <prop key="hibernate.cache.use_query_cache">false</prop> <!--是否启动查询缓存 --> <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop> <!--指定缓存类 --> </props> </property> <!-- <property name="packagesToScan" value="http://www.mamicode.com/com.*" /> 为什么不起作用,别人的就可以--> <!-- <property name="mappingResources"> <list> <value>com/entity/Admin.hbm.xml</value> <value>com/entity/Userinfo.hbm.xml</value> </list> </property> --> <property name="mappingDirectoryLocations"> <list> <value>com/entity</value> </list></property> </bean> <bean id="tm" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactoryt" /> </bean> <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <property name="transactionManager" ref="tm" /> <!-- 配置事务属性 --> <property name="transactionAttributes"> <props> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> <!-- 配置DAO --> <bean id="userDao" class="com.dao.imp.UserDao"> <property name="sessionFactory" ref="sessionFactoryt" /> </bean>
当使用Hibernate的配置文件进行配置,没有错误:
<!-- 也可以这样配 --> <property name="configLocation"> <value>classpath:hibernate.cfg.xml</value> </property>
但是使用dataSource进行配置,运行的时候,说找不到entity,很明显是没有找到,数据库中的表的配置文件,试了好几种方法,其中
appingResources和mappingDirectoryLocations可行,这两个的区别,前者是单独的写配置,后者是写的目录。
在网上也找到了packagesToScan属性,下载了别人的一个示例,奇怪的是别人的可以运行,我自己设置为自己的com.entity就不可行,原因还不知。
<!-- <property name="packagesToScan" value="http://www.mamicode.com/com.*" /> 为什么不起作用,别人的就可以--> <!-- <property name="mappingResources"> <list> <value>com/entity/Admin.hbm.xml</value> <value>com/entity/Userinfo.hbm.xml</value> </list> </property> --> <property name="mappingDirectoryLocations"> <list> <value>com/entity</value> </list></property>
Spring中的mappingResources和mappingDirectoryLocations
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。