Создание распространяемой библиотеки Java, которая использует Hibernate - PullRequest
3 голосов
/ 21 февраля 2012

Требуется несколько советов, прежде чем я начну небольшой проект ...

У меня есть проект Java EE, который использует Spring 3 и Hibernate 3.6 для доступа к базе данных, в которой я создал довольно много APIдля доступа к базе данных.Есть несколько других приложений, которым нужно использовать эти API (поддерживаемые той же базой данных), поэтому я хотел бы разбить их на распространяемые JAR-файлы.

Проблема в том, что я не могу найти хороший способраспространять библиотеку, поддерживаемую Hibernate.Я использую аннотации, а не конфигурационные файлы для Hibernate.У каждого API есть одноэлементный объект, который в моем приложении настроен как bean-компонент Spring и использует SessionFactory.Bean-компонент Spring (скопированный ниже) имеет несколько элементов конфигурации.

Итак, мои вопросы:

  1. Я хотел бы отделить библиотеку от Spring (чтобы другие приложения нет обязательно нужно использовать Spring).Это реально?
  2. Каков наилучший способ взять экземпляр DataSource (общий знаменатель для каждого приложения), превратить его в SessionFactory и передать его в синглтон?
  3. Есть лиспособ инкапсулировать несколько элементов hibernateProperties из приведенного ниже компонента, поэтому они находятся в библиотеке, а не в файле конфигурации?
  4. Синглтоны используют диспетчер транзакций 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>

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...