It's the mystery of life... ;-)
No, I can't tell you why I injected the dataSource into my DAO.
But both seems to be correct...
Nathan Maves a écrit :
> Now that you found the difference can you tell us why you were
> injecting a datasource into your dao?
>
> My applications are configured the same was Jeff's are.
>
>
>
> On 9/7/06, TNO <tnodev@free.fr> wrote:
>>
>> This is problem Spring/Ibatis !
>> By examinig your bean, the only difference was the injection of the
>> datasource.
>> I injected it in the DAO and you, in the SqlMapClientFactoryBean
>>
>> BUG :
>> <beans default-lazy-init="true">
>> <bean id="sqlMapClientArcDb"
>> class="org.springframework.orm.ibatis.SqlMapClientFactoryBean
>> ">
>> <property name="configLocation">
>>
>> <value>classpath:arc/db/config/sql-map-config-arcdb.xml</value>
>> </property>
>> </bean>
>> ...
>> <bean id="planDAO" class="
>> arc.db.auto.dao.ibatis.PlanDAOiBatis" lazy-init="true">
>> <property name="dataSource"><ref bean="dataSourceArc" /></property>
>> <property name="sqlMapClient"><ref bean="sqlMapClientArcDb"
>> /></property>
>> <property name="sequenceDAO"><ref bean="sequenceDAO" /></property>
>> </bean>
>>
>> NO BUG :
>> <beans default-lazy-init="true">
>> <bean id="sqlMapClientArcDb"
>> class="org.springframework.orm.ibatis.SqlMapClientFactoryBean
>> ">
>> <property name="configLocation">
>>
>> <value>classpath:arc/db/config/sql-map-config-arcdb.xml</value>
>> </property>
>> <property name="dataSource"><ref bean="dataSourceArc" /></property>
>> </bean>
>> ...
>> <bean id="planDAO" class="
>> arc.db.auto.dao.ibatis.PlanDAOiBatis" lazy-init="true">
>> <property name="sqlMapClient"><ref bean="sqlMapClientArcDb"
>> /></property>
>> <property name="sequenceDAO"><ref bean="sequenceDAO" /></property>
>> </bean>
>>
>>
>> In SqlMapClientFactoryBean javaDoc :
>> * <p>Allows to specify a DataSource at the SqlMapClient level. This is
>> * preferable to per-DAO DataSource references, as it allows for lazy
>> loading
>> * and avoids repeated DataSource references.
>>
>>
>>
>> Thanks a lot Jeff, and longue vie à Ibatis
>>
>> Thomas
>>
>> Jeff Butler a écrit :
>>
>> I've migrated my test case to Spring, and everything still works OK.
>> Here's
>> my beans.xml:
>>
>> <beans>
>> <bean id="dataSource"
>> class="com.ibatis.common.jdbc.SimpleDataSource">
>> <constructor-arg>
>> <map>
>> <entry key="JDBC.Driver" value=" org.hsqldb.jdbcDriver"/>
>> <entry key="JDBC.ConnectionURL" value="jdbc:hsqldb:mem:aname"/>
>> <entry key="JDBC.Username" value="sa"/>
>> <entry key=" JDBC.Password" value=""/>
>> <entry key="JDBC.DefaultAutoCommit" value="false"/>
>> <entry key="Pool.PingQuery" value="SELECT 1"/>
>> <entry key=" Pool.PingEnabled" value="true"/>
>> <entry key="Pool.PingConnectionsOlderThan" value="1000000"/>
>> </map>
>> </constructor-arg>
>> </bean>
>>
>>
>> <bean id="sqlMapClient"
>>
>> class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
>> <property name="configLocation">
>>
>> <value>classpath:test/sqlmap/TestSqlMapConfig.xml</value>
>> </property>
>> <property name="dataSource">
>> <ref bean="dataSource"/>
>> </property>
>> </bean>
>>
>> <bean id="animalDao" class="test.dao.AnimalDAOImpl">
>> <property name="sqlMapClient">
>> <ref bean="sqlMapClient"/>
>> </property>
>> </bean>
>> </beans>
>>
>> My AnimalDAOImpl class extends Spring's SqlMapClientTemplate. I'll
>> send you
>> the entire test case offline if you're interested. It works with
>> HSQLDB and
>> is just a Java application (no web dependancies).
>>
>> Jeff Butler
>>
>>
>>
>> On 9/6/06, TNO <tnodev@free.fr> wrote:
>> >
>> >
>> > I'm using Spring, Ibatis, and postgreSql 8.0
>> > one project call XxxDAO which manage all the DAO (no transaction)
>> > one project call XxxMgr which manage every transactions
>> >
>> > So when I lauch my junit test on XxxDAO, there is no transaction
>> manager,
>> only a SimpleDataSource from Ibatis.
>> > Here's the db config
>> >
>> > <beans>
>> > <bean id="myPropertyConfigurer"
>> class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
>>
>> > <property name="locations">
>> > <list>
>> > <value>arc/constante/jdbc.properties</value>
>> > </list>
>> > </property>
>> > </bean>
>> > <bean id="dataSourceArc"
>> class="com.ibatis.common.jdbc.SimpleDataSource ">
>> > <constructor-arg>
>> > <map>
>> > <entry key="JDBC.Driver" value="${jdbc.driverClassName}"/>
>> > <entry key="JDBC.ConnectionURL" value="${ jdbc.url}"/>
>> > <entry key="JDBC.Username" value="${jdbc.username}"/>
>> > <entry key="JDBC.Password" value="${jdbc.password}"/>
>> > <entry key=" JDBC.DefaultAutoCommit"
>> value="${jdbc.defaultAutoCommit}"/>
>> > <entry key="Pool.PingQuery" value="SELECT 1"/>
>> > <entry key="Pool.PingEnabled" value="true"/>
>> > <entry key="Pool.PingConnectionsOlderThan"
>> value="1000000"/>
>> > </map>
>> > </constructor-arg>
>> > </bean>
>> >
>> > </beans>
>> >
>> > Then, I have a big file sql-init-config.xml which contains all my
>> alias
>> for ibatis for each table
>> > example :
>> > <typeAlias alias="plan" type="arc.db.model.Plan" />
>> >
>> > <resultMap id="planResult" class="plan">
>> > <result property="idPlan" column="plan_i_plan" />
>> > <result property="idMandat" column="plan_i_mandat" />
>> > <result property="infoAssedic" column="plan_t_info_assedic" />
>> > <result property="avisControlleur"
>> column="plan_t_avis_controlleur" />
>> > <result property="avisRepresentantSalarie"
>> column="plan_t_avis_representant_salarie" />
>> > <result property="garantie" column="plan_t_garantie" />
>> > <result property="remplacementDirigeant"
>> column="plan_t_remplacement_dirigeant" />
>> > <result property="actifSituation"
>> column="plan_t_actif_situation" />
>> > <result property="monCumulDeclaration"
>> column="plan_m_cumul_declaration" />
>> > <result property="idPlanOptionDef"
>> column="plan_i_plan_option_def" />
>> > <result property="idPlanOptionNon"
>> column="plan_i_plan_option_non" />
>> > <result property="isPrivi" column="plan_b_privi" />
>> > <result property="isChiro" column="plan_b_chiro" />
>> > <result property="isConteste" column="plan_b_conteste" />
>> > <result property="isProvi" column="plan_b_provi" />
>> > <result property="isAechoir" column="plan_b_aechoir" />
>> > <result property="isValider" column="plan_b_valider" />
>> > <result property="dateProchaineEcheance"
>> column="plan_d_prochaine_echeance" />
>> > <result property="isValidationEncours"
>> column="plan_b_validation_encours" />
>> > <result property="isEcheancier" column="plan_b_echeancier" />
>> > <result property="isReprise" column="plan_b_reprise" />
>> > </resultMap>
>> >
>> > <sql id="planColonne">
>> > plan.i_plan AS plan_i_plan,
>> > plan.i_mandat AS plan_i_mandat,
>> > plan.t_info_assedic AS plan_t_info_assedic,
>> > plan.t_avis_controlleur AS plan_t_avis_controlleur,
>> > plan.t_avis_representant_salarie AS
>> plan_t_avis_representant_salarie,
>> > plan.t_garantie AS plan_t_garantie,
>> > plan.t_remplacement_dirigeant AS plan_t_remplacement_dirigeant,
>> > plan.t_actif_situation AS plan_t_actif_situation,
>> > plan.m_cumul_declaration AS plan_m_cumul_declaration,
>> > plan.i_plan_option_def AS plan_i_plan_option_def,
>> > plan.i_plan_option_non AS plan_i_plan_option_non,
>> > plan.b_privi AS plan_b_privi,
>> > plan.b_chiro AS plan_b_chiro,
>> > plan.b_conteste AS plan_b_conteste,
>> > plan.b_provi AS plan_b_provi,
>> > plan.b_aechoir AS plan_b_aechoir,
>> > plan.b_valider AS plan_b_valider,
>> > plan.d_prochaine_echeance AS plan_d_prochaine_echeance,
>> > plan.b_validation_encours AS plan_b_validation_encours,
>> > plan.b_echeancier AS plan_b_echeancier,
>> > plan.b_reprise AS plan_b_reprise
>> > </sql>
>> >
>> > <sql id="getPlanSql">
>> > SELECT
>> > <include refid="planColonne"/>
>> > FROM plan
>> > </sql>
>> >
>> > Then, one XxxSql.xml for each table which contains my failed query
>> >
>> > <select id="getPlanOptionFromIdPlan" resultMap="planOptionResult">
>> > <include refid="getPlanOptionSql"/>
>> > WHERE plan_option.i_plan = #id#
>> > </select>
>> > <select id="getEcheanceOptionFromIdPlan"
>> resultMap="echeanceOptionResult">
>> > <include refid="getEcheanceOptionSql"/>
>> > WHERE echeance_option.i_plan = #id#
>> > </select>
>> > <select id="getEcheancePlanFromIdPlan" resultMap="echeancePlanResult">
>> > <include refid="getEcheancePlanSql"/>
>> > WHERE echeance_plan.i_plan = #id#
>> > </select>
>> >
>> > <resultMap id="planResult1N" class="plan" extends="planResult">
>> > <result property="listEcheanceOption"
>> > select="getEcheanceOptionFromIdPlan" column="plan_i_plan"
>> />
>> > <result property="listEcheancePlan"
>> > select="getEcheancePlanFromIdPlan" column="plan_i_plan"
>> />
>> > <result property="listPlanOption"
>> select="getPlanOptionFromIdPlan"
>> > column="plan_i_plan" />
>> > </resultMap>
>> >
>> > <select id="getPlan1N" parameterClass="string"
>> resultMap="planResult1N">
>> > <include refid="getPlanSql"/>
>> > $whereStr$
>> > </select>
>> >
>> >
>> > All xml files are in the sqlMapConfig, but i don't have any
>> transaction
>> manager...
>> > <sqlMapConfig>
>> > <sqlMap resource="arc/db/config/sql-init-config.xml"/>
>> > ...
>> > <sqlMap
>> resource="arc/db/auto/dao/ibatis/config/PlanSQL.xml" />
>> > ...
>> > </sqlMapConfig>
>> >
>> >
>> > Then, In my Spring application-context, I have
>> >
>> > <beans default-lazy-init="true">
>> > <bean id="sqlMapClientArcDb"
>> class="org.springframework.orm.ibatis.SqlMapClientFactoryBean
>> ">
>> > <property name="configLocation">
>> >
>> <value>classpath:arc/db/config/sql-map-config-arcdb.xml</value>
>> > </property>
>> > </bean>
>> > ...
>> > <bean id="planDAO" class="
>> arc.db.auto.dao.ibatis.PlanDAOiBatis" lazy-init="true">
>> > <property name="dataSource"><ref bean="dataSourceArc"
>> /></property>
>> > <property name="sqlMapClient"><ref bean="sqlMapClientArcDb"
>> /></property>
>> > <property name="sequenceDAO"><ref bean="sequenceDAO" /></property>
>> > </bean>
>> > ...
>> >
>> > My TestPlanDAOIbatis is a reproductible test case with my own data...
>> > I can give you everything if you want to reproduce it !
>> >
>> > thanks, Tom
>> >
>> >
>> ________________________________
>>
>> No virus found in this incoming message.
>> Checked by AVG Free Edition.
>> Version: 7.1.405 / Virus Database: 268.12.1/440 - Release Date:
>> 06/09/2006
>>
>>
>> --
>> Il n'y a pas de mauvais langage, il n'y a que des bons programmeurs
>>
>
>
>
--
Il n'y a pas de mauvais langage, il n'y a que des bons programmeurs
|