Hibernate团队宣布Hibernate 6时宣称,通过在JDBC ResultSet中从按名称读取切换为按位置读取,它们可以获得性能上的好处。
高负载性能测试表明,Hibernate按名称从ResultSet中读取值的方法是其扩展吞吐量的最大限制因素。
这是否意味着他们将呼叫从更改 getString(String columnLabel)为getString(int columnIndex)?
为什么这样更快?
由于ResultSet是一个接口没有性能增益是否取决于执行它的JDBC驱动程序?
收益有多大?
我正在进行为期两天的Java EE培训.我们在那里使用Java EE,Spring Framework,Maven,Springsource Tool Suite(Eclipse),Tomcat.
我带了我们在那里创建的Eclipse工作区并在我的工作PC上运行它.如果我没记错的话,我只能正确配置Tomcat,它可以在我的电脑上运行.
现在我想在subversion中保存包含5个"sub"项目的已创建的Eclipse工作区,以便我的同事可以将它们签出并在他们的计算机上运行.
怎么做到这一点?我在某处发现了一个svn:ignore规则:
.classpath
.project
.settings
target
Run Code Online (Sandbox Code Playgroud)
使用tortoiseSVN我添加到具有工作空间的文件夹这个忽略规则,但发现底层文件夹目标没有删除所以我手动删除它们并"添加到忽略列表".但之后,Spring源工具套件中的项目没有看到mevan依赖项(我认为是这样)因为导入被破坏了.STS强调组织.在进口,并说它无法解决这个问题.
我如何正确版本控制这样的项目?
比方说,我有一个List<Integer> ints = new ArrayList<>();,我想将值添加到它,并使用比较并行执行的结果forEach()和Collectors.toList().
首先,我将一些来自顺序IntStream和forEach的值添加到此列表中:
IntStream.range(0,10).boxed().forEach(ints::add);
Run Code Online (Sandbox Code Playgroud)
我得到了正确的结果:
ints ==> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)
现在我.clear()在列表中并行执行相同的操作:
IntStream.range(0,10).parallel().boxed().forEach(ints::add);
Run Code Online (Sandbox Code Playgroud)
现在由于多线程,我得到了错误的结果:
ints ==> [6, 5, 8, 9, 7, 2, 4, 3, 1, 0]
Run Code Online (Sandbox Code Playgroud)
现在我切换到收集相同的整数流:
IntStream.range(0,10).parallel().boxed().collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
我得到了正确的结果:
ints ==> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)
问题:
为什么两个并行执行产生不同的Collector结果?为什么产生正确的结果?
如果forEach产生随机结果,也Collector应该.我没有指定任何排序,我认为他在内部添加到我手动使用的列表forEach.由于他并行执行,因此他的add方法应该以未指定的顺序获取值.测试完成了JShell.
编辑:这里没有重复.我理解相关的问题.收集器为什么产生正确的结果?如果他将产生另一个随机结果,我不会问.
我是Java和Hibernate的新手.在工作中,我们正在使用Spring,Hibernate,JBOSS等开发一个中型的forWrocessing J2EE Web应用程序.使用Hibernate的正确方法是什么?我应该首先创建一个类图和使用hibernate到数据库表的映射,还是应该首先建模数据库表,然后将其映射到Hibernate实体?还是依赖?如果它取决于什么?这种方法中的任何一种方法都存在缺点吗?是否可以使用Hibernate 4将"任何"类图映射到数据库?
我正在评估JasperReports的报告生成.我在Windows和Linux之间的报表可移植性方面存在一些问题.我发现了一个(hacky)解决方案,使其跨平台工作.不过我想知道是什么jasperreports-fonts:
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-fonts</artifactId>
<version>5.6.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我看到它包含DejaVu Sans字体,但我不知道如何使用这个jar(我在网上什么也没发现),如果这将以优雅,简单的方式解决我的跨平台软件.

你能告诉我更多关于这个罐子的信息吗?
假设我有以下存储库:
public interface UserRepository extends JpaRepository<User, Long> {
@Query("select u from User u")
Stream<User> streamAllPaged(Pageable pageable);
}
Run Code Online (Sandbox Code Playgroud)
我想进行搜索:
public Page<User> findAllUsers(Pageable page) {
Page<User> page = null;
try (Stream<User> users = userRepository.streamAllPaged(page)) {
Set<User> users = users.filter(u -> user.getName().equals("foo"))
.collect(Collectors.toSet());
//create page from set?
}
}
Run Code Online (Sandbox Code Playgroud)
显然我可以使用子列表并手动插入页面大小等但我想应该有更"标准"的方法来做到这一点?
要在web.xml中强制https,我使用的是此代码段:
<security-constraint>
<web-resource-collection>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
Run Code Online (Sandbox Code Playgroud)
在Spring Java Config中是否有相同的功能?我已经发现我需要一个ServletSecurityElement.但是我如何将它连接到其他人呢?
public class WebAppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext container) throws ServletException {
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
container.addListener(new ContextLoaderListener(context));
context.register(PersistenceJPAConfig.class);
FilterRegistration filter = container.addFilter("wicket.myproject", WicketFilter.class);
filter.setInitParameter("applicationClassName", WicketApplication.class.getName());
filter.setInitParameter(WicketFilter.FILTER_MAPPING_PARAM, "/*");
filter.addMappingForUrlPatterns(null, false, "/*");
HttpConstraintElement forceHttpsConstraint = new HttpConstraintElement(ServletSecurity.TransportGuarantee.CONFIDENTIAL, "");
ServletSecurityElement securityElement = new ServletSecurityElement(forceHttpsConstraint);
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试从WildFly 8.2.0迁移到WildFly 10.0.0,这意味着我已经(并希望)从Hibernate 4.3迁移到Hibernate 5.0.
Java 8u40
Spring 4.1.9
SQL Server 2012
Wildfly 8.2.0 -> Wildfly 10.0.0
Hibernate 4.3.6 -> Hibernate 5.0.7
Run Code Online (Sandbox Code Playgroud)
我已经阅读了迁移指南,并且我遇到了命名策略的变化.我在SO上已经 阅读了 很多 关于这个的问题,但是我看起来有点不同.Hibernate抱怨找不到表:
INFO [o.h.Version] HHH000412: Hibernate Core {5.0.7.Final}
INFO [o.h.cfg.Environment] HHH000206: hibernate.properties not found
INFO [o.h.cfg.Environment] HHH000021: Bytecode provider name : javassist
INFO [o.h.annotations.common.Version] HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
INFO [o.h.dialect.Dialect] HHH000400: Using dialect: org.hibernate.dialect.SQLServerDialect
INFO [o.h.envers.boot.internal.EnversServiceImpl] Envers integration enabled? : true
INFO [o.h.validator.internal.util.Version] HV000001: Hibernate Validator …Run Code Online (Sandbox Code Playgroud) 在我们公司,我们正在转向Java.我们希望使用Spring Framework开发Web应用程序.我们进行了为期4天的培训,培训师使用基于Eclipse的Springsource Tool Suite向我们展示了Java.但是,我以前使用NetBeans开发PHP应用程序.
与使用Springsource Tool Suite 2.7.0相比,使用NetBeans 7.0我会失去什么?是否真的值得使用专用的 Springsource工具套件开发Spring Framework Web应用程序,并考虑到我们是Java的新手?
更新 提供更多信息:我们希望使用以下技术: - Spring Framework 3 - JPA(Hibernate) - Apache Wicket - Maven
我正在使用JPA 2.1(Hibernate 4 as impl)和Spring Data JPA 1.9.0.我如何实现全文搜索?
我的方案如下.我有一个User实体,在UI上有一个显示大多数用户属性的表,我希望用户给文本框输入一个搜索词并搜索所有属性.
我看到有两个选项可以做到这一点:
ORs和编写一个JPQL查询LIKE % :searchString %选项1对性能不利,但写得很好.
选项2是在DB端执行的高性能,但编写起来很麻烦.
现在即时通过选项1,因为我需要将布尔值转换为"yes"/"no"并且还有一个配置文件枚举,我想通过它的字段描述而不是实际的枚举值进行搜索.
在用户实体中,我有一个方法,它返回我希望被空格分隔的所有字段:
public String getSearchString(){
return StringUtils.join(
Arrays.asList(
login,
firstName,
lastName,
email,
active ? "yes" : "no",
profile.getDescription())
, " ");
}
Run Code Online (Sandbox Code Playgroud)
在服务中我从DB加载所有用户并通过此搜索字符串过滤:
@Override
public List<User> getUsers(final String searchText) {
final List<User> users = getUsers();
if(StringUtils.isBlank(searchText)){
return users;
}
CollectionUtils.filter(users, new Predicate<User>() {
@Override
public boolean evaluate(User object) {
return StringUtils.containsIgnoreCase(object.getSearchString(), searchText);
}
}); …Run Code Online (Sandbox Code Playgroud)