Требуется несколько советов, прежде чем я начну небольшой проект ...
У меня есть проект Java EE, который использует Spring 3 и Hibernate 3.6 для доступа к базе данных, в которой я создал довольно много APIдля доступа к базе данных.Есть несколько других приложений, которым нужно использовать эти API (поддерживаемые той же базой данных), поэтому я хотел бы разбить их на распространяемые JAR-файлы.
Проблема в том, что я не могу найти хороший способраспространять библиотеку, поддерживаемую Hibernate.Я использую аннотации, а не конфигурационные файлы для Hibernate.У каждого API есть одноэлементный объект, который в моем приложении настроен как bean-компонент Spring и использует SessionFactory.Bean-компонент Spring (скопированный ниже) имеет несколько элементов конфигурации.
Итак, мои вопросы:
- Я хотел бы отделить библиотеку от Spring (чтобы другие приложения нет обязательно нужно использовать Spring).Это реально?
- Каков наилучший способ взять экземпляр DataSource (общий знаменатель для каждого приложения), превратить его в SessionFactory и передать его в синглтон?
- Есть лиспособ инкапсулировать несколько элементов hibernateProperties из приведенного ниже компонента, поэтому они находятся в библиотеке, а не в файле конфигурации?
- Синглтоны используют диспетчер транзакций Spring с аннотацией @Transactional.Очевидно, что это связано с Spring, поэтому я полагаю, мне придется удалить его, если я хочу сделать это Spring-независимым?Должен ли я переключиться на программное управление транзакциями?
Так вот в чем история - это звучит выполнимо?
Spring config:
<jee:jndi-lookup id="dataSource" jndi-name="oracleDatabase" />
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="annotatedClasses">
<list>
<value>com.company.data.DataManagerSingleton</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.default_schema">schema_name</prop>
<prop key="hibernate.jdbc.batch_size">20</prop>
</props>
</property>
<property name="packagesToScan">
<value>com.company.data</value>
</property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
<qualifier value="ec" />
</bean>
Спасибо.