使用常见的spring应用程序我可以将dataSource或Hibernate会话工厂定义为bean,然后简单地自动装配它们。那样:
@Autowired
private DataSource dataSource;
或
@Autowired
private SessionFactory sessionFactory;
现在我想创建一些表并将它们存储在露天中。如何获得dataSource
或sessionFactory
(如果alfresco使用hibernate)指向露天数据库?
答案 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-Spring和org.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可能对您有所帮助。