创建一个使用Hibernate的可分发Java库

时间:2012-02-20 20:02:06

标签: java hibernate spring

在我开始一个小项目之前寻找一些建议...

我有一个Java EE项目,它使用Spring 3和Hibernate 3.6来访问数据库,我在其中创建了很多API来访问数据库。还有其他几个应用程序需要使用这些API(由同一个数据库支持),因此我想将它们分解为可分发的JAR。

问题是 - 我无法找到一个分发Hibernate支持的库的好方法。我使用注释,而不是Hibernate的配置文件。每个API都有一个单例,在我的应用程序中,它被设置为Spring bean并使用SessionFactory。 Spring bean(下面复制)有一些配置项。

所以,我的问题是:

  1. 我想将库与Spring分离(因此其他应用程序不一定要使用Spring)。那是现实吗?
  2. 获取DataSource实例的最佳方法是什么(常见的 每个应用程序的分母),将其转换为SessionFactory和 将它传递给单身人士?
  3. 有没有办法从下面的bean中封装几个hibernateProperties项,所以它们在库中而不是在配置文件中?
  4. 单例使用Spring事务管理器和@Transactional注释。显然,这与Spring相结合,所以我想如果我想让这个Spring无关,我必须删除它吗?我应该切换到程序化事务管理吗?
  5. 这就是故事 - 这听起来有用吗?

    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>
    

    感谢。

0 个答案:

没有答案