如何在露天访问会话工厂(dataSource)?

时间:2016-10-18 02:55:50

标签: java spring hibernate alfresco

使用常见的spring应用程序我可以将dataSource或Hibernate会话工厂定义为bean,然后简单地自动装配它们。那样:

@Autowired
private DataSource dataSource;

@Autowired
private SessionFactory sessionFactory;

现在我想创建一些表并将它们存储在露天中。如何获得dataSourcesessionFactory(如果alfresco使用hibernate)指向露天数据库?

1 个答案:

答案 0 :(得分:1)

注入core-services-context.xml中定义的dataSource bean:

<bean id="dataSource" class="org.alfresco.config.JndiObjectFactoryBean">
    <property name="jndiName">
        <value>java:comp/env/jdbc/dataSource</value>
    </property>
    <property name="defaultObject">
        <ref bean="defaultDataSource" />
    </property>
</bean>

使用your-config-context.xml,例如ibatis-context.xml

<bean id="repoSqlSessionFactory" class="org.alfresco.ibatis.HierarchicalSqlSessionFactoryBean">
    <property name="resourceLoader" ref="dialectResourceLoader"/>
    <property name="dataSource" ref="dataSource"/>
    <property name="configLocation">
        <value>classpath:alfresco/ibatis/alfresco-SqlMapConfig.xml</value>
    </property>
</bean>

请注意:

  

Alfresco整合了Hibernate和iBATIS开源数据库   抽象层允许它移植到许多不同的   数据库管理系统。

因此,最好使用MyBatis-Springorg.mybatis.spring.SqlSessionTemplate,例如org.alfresco.repo.domain.audit.ibatis.AuditDAOImpl.java

<bean id="auditSqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
    <constructor-arg index="0" ref="repoSqlSessionFactory"/>
</bean>

<bean id="auditDAO" class="org.alfresco.repo.domain.audit.ibatis.AuditDAOImpl">
    <property name="sqlSessionTemplate" ref="auditSqlSessionTemplate"/>
    <property name="contentService" ref="contentService"/>
    <property name="contentDataDAO" ref="contentDataDAO"/>
    <property name="propertyValueDAO" ref="propertyValueDAO"/>
</bean>

Alfresco 5 and Spring tutorial可能对您有所帮助。