小编Pat*_*Pat的帖子

Spring DAO vs Spring ORM vs Spring JDBC

我正在浏览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?

spring spring-jdbc spring-orm spring-data

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

如何将SLF4J与Log4J绑定?

我正在尝试用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)

java logging log4j slf4j maven

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

为什么JVM内存参数通常是256的倍数?

我已经看到几乎所有的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在其他开发人员中看到了关于这个主题的足够的内容,但是我没有看到很多具体的推理要么支持 - 十进制或二进制值.

java memory-management jvm-arguments

5
推荐指数
1
解决办法
3175
查看次数

Eclipse - 导入现有Maven项目,提供不支持的IClasspathEntry kind = 4错误

我有一个正确的pom.xml文件的Maven项目.我能够从命令行构建项目mvn install.但是,当我在eclipse中将项目导入为现有的Maven项目时,我Unsupported IClasspathEntry kind=4在eclipse中遇到错误.

此外,一些项目的属性在导入后没有正确反映 - 例如它是一个Web项目,但我没有Deployed Resources在项目结构下看到.我仍然可以M在项目图标上看到这一点,表明它是一个maven项目.

我尝试更新项目Alt+F5并刷新它F5.还是一样的错误.

我也尝试过这个SO帖子中提到的方法

如何修复错误"正在更新Maven项目".不支持的IClasspathEntry种类= 4?

  • 即禁用maven性质,eclipse:清洁,重新启用maven性质.当我启用maven性质时仍然是同样的错误.

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个错误是否相关.

我的设置:

  • Windows 7 Pro(64位)
  • JDK 1.6.0_31(32位)
  • Eclipse Juno 4.2
  • Maven 3.0.5
  • m2e 1.4.0

java eclipse maven m2e

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

使用 Mockito Spy 对 ThreadPoolTask​​Executor 进行单元测试 InterruptedException

我正在使用 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)

为了能够对此类进行单元测试并覆盖InterruptedExceptionExecutionException分支,我尝试了多种方法(使用Mockito Spy),但未能成功测试这一点。

单元测试类如下所示:

@RunWith(MockitoJUnitRunner.class)
public class LoadDataTest {

    @InjectMocks
    private LoadData loadData;

    @Spy
    private ThreadPoolTaskExecutor spyTaskExecutor …
Run Code Online (Sandbox Code Playgroud)

java junit spring mockito interrupted-exception

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