小编mat*_*t b的帖子

关于Hibernate session.flush()的问题

我想询问以下情况下flush方法的实际用途:

for (int i = 0; i < myList.size(); i++) {
    Car c = new Car( car.get(i).getId(),car.get(i).getName() );
    getCurrentSession().save(c);
    if (i % 20 == 0)
        getCurrentSession().flush();
}
Run Code Online (Sandbox Code Playgroud)

这是否意味着在迭代20之后,刷新缓存,然后20个持有的内存对象实际上保存在数据库中?

有人可以向我解释当条件成立时会发生什么.

java orm hibernate

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

使用不同的类加载器进行不同的JUnit测试?

我有一个Singleton/Factory对象,我想编写一个JUnit测试.Factory方法根据类路径上属性文件中的类名决定实例化哪个实现类.如果未找到属性文件,或者属性文件不包含classname键,则该类将实例化默认实现类.

由于工厂保持Singleton的静态实例在实例化后使用,为了能够在Factory方法中测试"故障转移"逻辑,我需要在不同的类加载器中运行每个测试方法.

有没有办法使用JUnit(或其他单元测试包)来做到这一点?

编辑:这是一些正在使用的Factory代码:

private static MyClass myClassImpl = instantiateMyClass();

private static MyClass instantiateMyClass() {
    MyClass newMyClass = null;
    String className = null;

    try {
        Properties props = getProperties();
        className = props.getProperty(PROPERTY_CLASSNAME_KEY);

        if (className == null) {
            log.warn("instantiateMyClass: Property [" + PROPERTY_CLASSNAME_KEY
                    + "] not found in properties, using default MyClass class [" + DEFAULT_CLASSNAME + "]");
            className = DEFAULT_CLASSNAME;
        }

        Class MyClassClass = Class.forName(className);
        Object MyClassObj = MyClassClass.newInstance();
        if (MyClassObj instanceof MyClass) {
            newMyClass = (MyClass) MyClassObj;
        }
    } …
Run Code Online (Sandbox Code Playgroud)

java junit singleton unit-testing

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

如何告诉Eclipse忽略Ant build.xml中的错误?

我有一个使用Maven构建的Eclipse项目,我在Eclipse中使用m2eclipse插件,因为它支持Maven.

但是,该项目还包含一个build.xml不用于实际构建项目的项目,但仅用于脚本功能作为项目开发人员的实用程序 - 它不用于构建或打包产品(只是帮助自动化开发人员的一些辅助任务)经常要调用一边).

每当在Eclipse的编辑器中打开此文件时,Eclipse会注意到它认为是build.xml中缺少某些声明的问题,并开始显示项目的错误(在Problems视图中)以及红色X图标/标记该项目显示存在构建错误.这些甚至不是真正的问题build.xml,只是Eclipse认为存在的一些问题,因为它无法导入所使用的所有其他依赖文件build.xml.项目中没有"构建"错误,只是Eclipse(在它的无限智慧中)能够解析build.xml用于辅助目的的错误.

有没有办法告诉Eclipse忽略build.xml或忽略特定项目中的Ant警告?我是否需要Java BuilderBuilders项目属性的选项卡中删除它?

java eclipse ant m2eclipse

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

大对象可能无法在自动提交模式下使用

我有一个Spring应用程序,它在PostgreSQL数据库上使用Hibernate.我正在尝试将文件存储在数据库的表中.它似乎将行存储在文件中(我只是在EntityManager上使用persist方法),但是当从数据库加载对象时,我得到以下异常:

org.postgresql.util.PSQLException: Large Objects may not be used in auto-commit mode.
Run Code Online (Sandbox Code Playgroud)

要加载数据,我正在使用MultipartFile瞬态属性,并在其setter中设置我想要保留的信息(byte [],fileName,size).我坚持的实体看起来像这个(我已经省略了其余的getter/setter):

@Entity
@Table(name="myobjects")
public class MyClass {

    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="sequence")
    @SequenceGenerator(name="sequence", sequenceName="myobjects_pk_seq", allocationSize=1)
    @Column(name="id")
    private Integer id;

    @Lob
    private String description;

    @Temporal(TemporalType.TIMESTAMP)
    private Date creationDate;

    @Transient
    private MultipartFile multipartFile;

    @Lob
    @Basic(fetch=FetchType.LAZY, optional=true)
    byte[] file;

    String fileName;

    String fileContentType;

    Integer fileSize;

    public void setMultipartFile(MultipartFile multipartFile) {
        this.multipartFile = multipartFile;
        try {
            this.file = this.multipartFile.getBytes();
            this.fileName = this.multipartFile.getOriginalFilename();
            this.fileContentType = this.multipartFile.getContentType();
            this.fileSize = ((Long) this.multipartFile.getSize()).intValue();
        } catch (IOException e) { …
Run Code Online (Sandbox Code Playgroud)

java postgresql hibernate jpa autocommit

24
推荐指数
6
解决办法
3万
查看次数

最好的免费Java .class查看器?

我使用过DJ Java Decompiler,它有一个方便的GUI,但似乎最新版本只是一个试用版并强迫你在一段时间后购买该软件(我记得使用早期的免费版本大约一年前在以前的工作).

我知道Jad和Jadclipse,但我喜欢DJ Java Decompiler的是它与Windows资源管理器集成 - 所以我可以简单地在WinRAR之类的东西中打开一个JAR,通过软件包导航,然后双击一个.用于查看反编译源的类文件.

任何人都可以推荐其他好的,免费的.class观众吗?我想到的标准是:

  • 基于GUI
  • 集成到Windows资源管理器(因此我不必运行一些命令行选项,如JAD)
  • optional - 还可以显示原始JVM字节码命令

换句话说 - 我想尽可能找到最接近.NET Reflector for Java的东西.

java decompiling

23
推荐指数
3
解决办法
4万
查看次数

maven部署额外的jar文件

我有一个以特定方式构建和部署的工件(而不是jar文件).在部署过程中,构建了war文件.

如何配置pom以便将工件也部署为jar文件到其他位置?

java maven-2 pom.xml

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

EasyMock 3.0,模拟类抛出java.lang.IllegalStateException:没有最后一次调用可用的模拟

运行以下单元测试会抛出异常:java.lang.IllegalStateException:没有最后一次调用可用的模拟


import org.easymock.*;
import org.junit.*;

public class MyTest {

    @Test
    public void testWithClass() {
        Thread threadMock = EasyMock.createMock(Thread.class);
        EasyMock.expect(threadMock.isAlive()).andReturn(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

我不确定我做错了什么,在网上找不到任何好的例子.你如何使用EasyMock 3.0模拟一个类.上述单元测试有什么问题?任何帮助将不胜感激.

我的项目包括以下maven依赖项

<dependency>
   <groupId>org.easymock</groupId>
   <artifactId>easymock</artifactId>
   <version>3.0</version>
   <scope>test</scope>
</dependency>
<dependency>
   <groupId>cglib</groupId>
   <artifactId>cglib-nodep</artifactId>
   <version>2.2</version>
   <scope>test</scope>
</dependency>
<dependency>
   <groupId>org.objenesis</groupId>
   <artifactId>objenesis</artifactId>
   <version>1.2</version>
   <scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

easymock

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

Active MQ与JBoss Messaging

我将为项目选择一个JMS消息代理.JMS服务器稳定并且可以处理大量消息是至关重要的.我缩小了列表以包含Active MQ和JBoss Messaging.

我想知道你是否有任何经验,甚至更好,在同一环境中尝试过这两种方法.任何研究论文或类似文件的链接都会很好.

java jboss activemq-classic jms

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

在LEFT JOIN SQL查询上帮助WHERE

我正在尝试构建一个查询,其中包含一个列,指示用户是否已下载文档.我有一个名为HasDownloaded的表,其中包含以下列:id,documentID,memberID.找出用户是否已下载特定文档很容易; 但我需要生成一个查询,其结果将如下所示:

name              id
----------------------
abc               NULL
bbb               2
ccc               53
ddd               NULL
eee               13
Run Code Online (Sandbox Code Playgroud)

身份证并不重要; 我感兴趣的是文件是否已下载(是否为NULL).

这是我的查询:

SELECT Documents.name, HasDownloaded.id FROM Documents
LEFT JOIN HasDownloaded ON HasDownloaded.documentID = Documents.id
WHERE HasDownloaded.memberID = @memberID
Run Code Online (Sandbox Code Playgroud)

问题是,只有在HasDownloaded表中存在指定用户的条目时,才会返回值.我想保持这种简单,只具有条目HasDownloaded该文件被下载.因此,如果用户1已经下载了abc,bbb和ccc,我仍然希望ddd和eee显示在结果表中,只是id为NULL.但是WHERE子句只给出了存在条目的值.

我不是一个SQL专家 - 有没有一个运营商会给我我想要的东西?我应该采取不同的方法吗?或者这不可能吗?

sql join left-join

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

largeHeap = true清单标签不起作用?

我正在开发一个非常耗费内存的应用程序,并希望使用largeHeap-Tag,它应该为应用程序提供更多内存.无论我在AndroidManifest.xml中将此标记设置为什么,它对我给出的实际内存没有任何影响.我正在读出这样的最大记忆:

Log.v("Utils","Max Mem in MB:"+(Runtime.getRuntime().maxMemory()/1024/1024));
Run Code Online (Sandbox Code Playgroud)

我的清单看起来很像这样:

<application android:label="@string/app_name" android:hardwareAccelerated="true" android:largeHeap="true" android:debuggable="true">

    <activity android:name=".EntryActivity" android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>
Run Code Online (Sandbox Code Playgroud)

我在模拟器中运行3.1,我上面的日志输出总是48MB.有人可以帮忙吗?

java android

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