我想询问以下情况下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个持有的内存对象实际上保存在数据库中?
有人可以向我解释当条件成立时会发生什么.
我有一个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) 我有一个使用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 Builder从Builders项目属性的选项卡中删除它?
我有一个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) 我使用过DJ Java Decompiler,它有一个方便的GUI,但似乎最新版本只是一个试用版并强迫你在一段时间后购买该软件(我记得使用早期的免费版本大约一年前在以前的工作).
我知道Jad和Jadclipse,但我喜欢DJ Java Decompiler的是它与Windows资源管理器集成 - 所以我可以简单地在WinRAR之类的东西中打开一个JAR,通过软件包导航,然后双击一个.用于查看反编译源的类文件.
任何人都可以推荐其他好的,免费的.class观众吗?我想到的标准是:
换句话说 - 我想尽可能找到最接近.NET Reflector for Java的东西.
我有一个以特定方式构建和部署的工件(而不是jar文件).在部署过程中,构建了war文件.
如何配置pom以便将工件也部署为jar文件到其他位置?
运行以下单元测试会抛出异常: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) 我将为项目选择一个JMS消息代理.JMS服务器稳定并且可以处理大量消息是至关重要的.我缩小了列表以包含Active MQ和JBoss Messaging.
我想知道你是否有任何经验,甚至更好,在同一环境中尝试过这两种方法.任何研究论文或类似文件的链接都会很好.
我正在尝试构建一个查询,其中包含一个列,指示用户是否已下载文档.我有一个名为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专家 - 有没有一个运营商会给我我想要的东西?我应该采取不同的方法吗?或者这不可能吗?
我正在开发一个非常耗费内存的应用程序,并希望使用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.有人可以帮忙吗?