小编HDa*_*ave的帖子

Spring/JTA/JPA DAO集成测试不回滚?

我的DAO集成测试失败,因为在测试期间创建的实体在下一次测试开始时仍在数据库中.MySQL 5和H2都可以看到完全相同的行为.

测试类注释为:

@Transactional
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration( { "/testPersist-applicationContext.xml" })
Run Code Online (Sandbox Code Playgroud)

测试应用程序上下文中的事务bean配置如下:

<tx:annotation-driven />

<bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
    <property name="transactionManager" ref="atomikosTransactionManager" />
    <property name="userTransaction" ref="atomikosUserTransaction" />
</bean>

<bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager"
init-method="init" destroy-method="close">
    <property name="forceShutdown" value="false" />
</bean>

<bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">
    <property name="transactionTimeout" value="300" />
</bean>
Run Code Online (Sandbox Code Playgroud)

实体管理器配置如下:

<bean id="myappTestLocalEmf"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="myapp" />
    <property name="persistenceUnitPostProcessors">
        <bean                class="com.myapp.core.persist.util.JtaPersistenceUnitPostProcessor">
        <property name="jtaDataSource" ref="myappPersistTestJdbcDataSource" />
        </bean>
    </property>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="showSql" value="false" />
            <property name="database" value="$DS{hibernate.database}" />
            <property name="databasePlatform" value="$DS{hibernate.dialect}" />
        </bean>
    </property>
    <property name="jpaProperties"> …
Run Code Online (Sandbox Code Playgroud)

testing spring jpa jta atomikos

4
推荐指数
1
解决办法
3286
查看次数

混合JPA注释和XML配置

我有一个相当大的(新)项目,其中我们使用JPA映射注释了许多域类.现在是时候实现许多命名查询 - 一些实体可能有多达15-20个命名查询.我认为在注释中编写这些命名查询会使源文件混乱,因此我正在考虑将这些查询放在XML映射文件中.

这可能吗?

重要的是,这是否合理?

有更好的方法吗?

这是怎么做到的?

xml configuration jpa named

3
推荐指数
1
解决办法
5294
查看次数

在域模型中处理大型集合的好方法 - 使用 JPA/Hibernate ORM?

我的域类中有一些OneToMany子集合,它们可能会随着时间的推移而增长,以容纳数百或(很可能)数千个实例。然而,通常父母真正需要的只是“第一个”孩子或“最后一个”孩子或“最大”的孩子。让父实例循环遍历从数据库加载的大量对象集合似乎效率很低。

另一方面,我不想因为持久性问题而污染我的域模型,并开始必须在域类中使用我的 DAO 来执行查询。

我可能会将这些查找放在我的服务方法中,但我真的更喜欢将此登录名放在它所属的域中 - 试图避免“贫血域”反模式。

有没有一种方法可以从大集合中提取“特定”对象而不直接调用 DAO?我忽略了一些 JPA ORM 映射功能?

编辑: 应用程序是分层设计的,域模型层位于底部——它不依赖于其他任何东西。接下来是持久层,它实现 DAO 并依赖于域层。在它们之上是一个服务层,我试图通过将业务逻辑下推到域层来使其尽可能薄。

java mapping dns service jpa

3
推荐指数
1
解决办法
1066
查看次数

在FlexUnit4集成测试之间将数据库重置为已知状态的最佳方法?

背景:

我有一个Flex Web应用程序,通过BlazeDS与Java后端进行通信.Flex客户端由一个flex-client模块和一个独立的flex-service模块组成,该模块包含视图和表示模型,这些模块包含模型(值对象)和服务对象.

我正在使用FlexUnit4为flex-service模块的RemoteObjects编写异步集成测试.在某些测试中,我修改测试数据并查询它以查看是否一切正常(此处显示的技术:http://saturnboy.com/2010/02/async-testing-with-flexunit4)

题:

在每个FlexUnit4测试方法(或测试方法链)之前,如何将数据库重置为已知状态?在我的Java服务器集成测试中,我通过DBUnit和Spring Test的事务的组合来做到这一点 - 在每个测试方法之后回滚.但是,这些Flexunit集成跨越多个请求,从而跨越多个事务.

如果没有在后端实现集成测试服务API,那么如何实现呢?当然其他人也遇到过这个问题?之前已经提出了类似的问题(集成后的回滚数据库(Selenium)测试),但没有令人满意的答案.

java database apache-flex integration-testing flexunit4

3
推荐指数
1
解决办法
1021
查看次数

如何判断Actionscript对象是否具有某个动态属性?

我有一个动态的Actionscript类,如下所示:

public dynamic class Foo {....}
Run Code Online (Sandbox Code Playgroud)

在我的代码中我(可能)添加一些属性:

myFoo["myNewDynamicProp"] = "bar";
Run Code Online (Sandbox Code Playgroud)

在我的代码的其他地方,给定一个类Foo的实例,如何确定是否已添加该动态属性而不抛出昂贵的异常?

apache-flex dynamic actionscript-3

3
推荐指数
1
解决办法
1871
查看次数

什么是将一组Java对象转换为另一组对象的最佳方法?

这是一个真正的新手的基本Java问题.我有一组Java对象(类"MyClass")实现某个接口(接口"MyIfc").我有一组这些对象存储在我的类中的私有变量中,声明如下:

protected Set<MyClass> stuff = new HashSet<MyClass>();
Run Code Online (Sandbox Code Playgroud)

我需要提供一个公共方法,将此集作为"MyIfc"类型的对象集合返回.

public Collection<MyIfc> getMyStuff() {...}
Run Code Online (Sandbox Code Playgroud)

我该如何进行转换?以下行给出了一个错误,它无法进行转换.我猜想编译器知道类MyClass的对象实现了MyIfc,因此会处理它.

Collection<MyIfc> newstuff = stuff;
Run Code Online (Sandbox Code Playgroud)

任何启示都表示赞赏.

java collections casting set

2
推荐指数
1
解决办法
2万
查看次数

许多小型dbunit数据集还是一个大型数据集?

在我调整架构时,在我看来,在多个小数据集中传播测试数据会产生维护问题.有人看到创建一个更大的测试数据集的问题?通过"更大",我仍然只谈论几百条记录.

database testing junit dbunit

2
推荐指数
1
解决办法
2251
查看次数

如何删除/隐藏 Atomikos 启动错误消息?

通过 Spring 配置 Atomikos 时,不需要 jta.properties 或 transactions.properties 文件。尽管如此,Atomikos 启动时会打印以下消息到 stderr:

No properties path set - looking for transactions.properties in classpath...
transactions.properties not found - looking for jta.properties in classpath...
Failed to open transactions properties file - using default values
Run Code Online (Sandbox Code Playgroud)

它使它看起来好像没有使用 Spring 配置——尽管显然一切都很好。有谁知道如何摆脱这个,所以我最终不会被问到 1.000 次?

有没有办法从特定组件或 jar 重定向 stderr?

spring stderr atomikos

2
推荐指数
1
解决办法
2550
查看次数

如何让Maven使用某些插件的最新版本?

由于版本v2.3.2中修复的maven-compiler-plugin v2.0.2中的错误,我只丢失了2个小时的时间.

显然,如果您没有指定Maven编译器插件的版本,Maven 2.2.1只会为您提供v2.0.2.

我们的项目使用15个以上的Maven插件.其中一些我们想要确定某个版本,但其中大部分(如编译器插件)我们想升级而不必考虑它.

有没有办法使用Maven自动执行此操作,或者我们是否必须指派某人每月研究可能的Maven插件升级,然后在我们的父POM中更改PluginManagement版本号的费力不讨好的任务?

java plugins build-process maven-2 build

2
推荐指数
3
解决办法
2498
查看次数

ExtJS Grid Row Specific EmptyText?

我们的应用程序使用Ext.grid.Panel显示数据行.当用户单击"新建..."按钮时,我们将向网格存储添加新记录.一切都很好.

但是,在某些字段中,仅仅是这些新的(尚未)未记录的记录,我们希望在某些单元格中显示特定的空文本.例如:'在此输入标题'或'选择平台'.

我知道Column上有一个emptyCellText属性,但是a)它被破坏了,b)我想只在新的,未同步的(例如幻像)记录上发生这种情况.

由于我是这个框架的新手,所以任何想法都是最受欢迎的.

javascript grid extjs extjs4.2

2
推荐指数
1
解决办法
1987
查看次数