我正在浏览Spring支持的数据访问技术,我注意到它提到了多个选项,我不确定它们之间的区别:
据我所知,Spring JDBC提供了模板,用于减少用于通过简单的旧方式访问数据库的样板代码 - 您编写自己的SQL查询.
Spring-ORM提供了通过ORM技术访问数据库的简化模板,如Hibernate,My(i)Batis等.
Spring-DAO按照Spring的网站:
Spring中的数据访问对象(DAO)支持旨在使您能够以一致的方式轻松使用JDBC,Hibernate或JDO等数据访问技术
我对ORM与JDBC有一点关系,因为它们针对的是访问数据库的不同方式.但Spring-DAO简直令人困惑!
有谁能请澄清这三者之间究竟有什么不同?哪种情况应该首选?
此外,还有另一个项目Spring-DATA可用(http://projects.spring.io/spring-data/)现在,它是否是Spring支持的所有数据访问技术的父项目,或者它只是Spring的新名称-dao?
我正在尝试用slf4j + log4j设置一个项目,但该死的东西只是不起作用......我一直得到例外:
Failed to instantiate SLF4J LoggerFactory
Reported exception:
java.lang.NoClassDefFoundError: org/apache/log4j/Level
at org.slf4j.LoggerFactory.bind(LoggerFactory.java:129)
at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:108)
at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:302)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:276)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:288)
at TestLog.main(TestLog.java:9)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Level
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 6 more
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Level
at org.slf4j.LoggerFactory.bind(LoggerFactory.java:129)
at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:108)
at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:302)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:276)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:288)
at TestLog.main(TestLog.java:9)
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Level
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at …Run Code Online (Sandbox Code Playgroud) 我已经看到几乎所有的JVM内存参数通常是256的倍数或round二进制值 - 例如256m,512m,1024m等.我知道,它可能与物理内存(RAM)通常是二进制数的事实有关,例如256 MB,1 GB等
我的问题是,如果将JVM内存设置为256的倍数或任何二进制值,它是否真的有助于内存管理?将JVM内存保持为圆形十进制值(例如1000m而不是1024m)是否有害 - 尽管我从未见过任何使用这种以round十进制表示的值的JVM .
操作系统会在启动时将所提及的内存分配给JVM,所以我想,对于JVM来说,它是否可以有效地管理圆形十进制内存大小(例如1000 MB)或者是否存在任何缺点更是一个问题.
编辑:我知道,我们CAN使用JVM内存的十进制值,但我的问题是SHOULD我们使用十进制值?
编辑2:关于JVM对处理每个内存大小同样有效的意见/猜测,请分享您用于得出结论的任何相关链接.我已经WAR在其他开发人员中看到了关于这个主题的足够的内容,但是我没有看到很多具体的推理要么支持 - 十进制或二进制值.
我有一个正确的pom.xml文件的Maven项目.我能够从命令行构建项目mvn install.但是,当我在eclipse中将项目导入为现有的Maven项目时,我Unsupported IClasspathEntry kind=4在eclipse中遇到错误.
此外,一些项目的属性在导入后没有正确反映 - 例如它是一个Web项目,但我没有Deployed Resources在项目结构下看到.我仍然可以M在项目图标上看到这一点,表明它是一个maven项目.
我尝试更新项目Alt+F5并刷新它F5.还是一样的错误.
我也尝试过这个SO帖子中提到的方法
Eclipse也在我的pom.xml中显示错误,但mvn install在cmd行中工作正常.
Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:2.5:copy-resources (default-cli)
Run Code Online (Sandbox Code Playgroud)
我不确定这2个错误是否相关.
我的设置:
我正在使用 springThreadPoolTaskExecutor在多个线程中执行任务。该类如下所示
@Component
public class LoadData {
//... ...
@Inject
private ThreadPoolTaskExecutor taskExecutor;
public SomeData getData(Long id) {
Future<SomeData> loadData = taskExecutor.submit(() -> {
//return methodToGetDataSynchronously(id);
return new SomeData();
});
try {
SomeData data = loadData.get();
} catch (InterruptedException | ExecutionException e) {
logger.error("error");
//some more processing for the error here
}
return data;
}
}
Run Code Online (Sandbox Code Playgroud)
为了能够对此类进行单元测试并覆盖InterruptedException和ExecutionException分支,我尝试了多种方法(使用Mockito Spy),但未能成功测试这一点。
单元测试类如下所示:
@RunWith(MockitoJUnitRunner.class)
public class LoadDataTest {
@InjectMocks
private LoadData loadData;
@Spy
private ThreadPoolTaskExecutor spyTaskExecutor …Run Code Online (Sandbox Code Playgroud) java ×4
maven ×2
spring ×2
eclipse ×1
junit ×1
log4j ×1
logging ×1
m2e ×1
mockito ×1
slf4j ×1
spring-data ×1
spring-jdbc ×1
spring-orm ×1