代码中标题的问题:
@Transactional (readonly = true)
public interface FooService {
void doSmth ();
}
public class FooServiceImpl implements FooService {
...
}
Run Code Online (Sandbox Code Playgroud)
VS
public interface FooService {
void doSmth ();
}
@Transactional (readonly = true)
public class FooServiceImpl implements FooService {
...
}
Run Code Online (Sandbox Code Playgroud) 观察这种情况让我非常困惑:
Integer i = null;
String str = null;
if (i == null) { //Nothing happens
...
}
if (str == null) { //Nothing happens
}
if (i == 0) { //NullPointerException
...
}
if (str == "0") { //Nothing happens
...
}
Run Code Online (Sandbox Code Playgroud)
因此,我认为首先执行装箱操作(即java尝试从中提取int值null),并且比较操作具有较低的优先级,这就是抛出异常的原因.
问题是:为什么在Java中以这种方式实现它?为什么拳击优先于比较参考?或者为什么他们没有null在拳击前实施验证?
目前,当NullPointerException使用包装的基元抛出它时看起来不一致,并且不会抛出真正的对象类型.
我听到很多关于非规范化的内容,这是为了提高某些应用程序的性能.但我从未试图做任何相关的事情.
所以,我只是好奇,归一化数据库中的哪些位置会使性能变差,换句话说,什么是非规范化原则?
如果我需要提高性能,我该如何使用这种技术?
database performance database-design normalization denormalization
我发现在hibernate配置文件中我们可以设置参数hibernate.default_schema:
<hibernate-configuration>
<session-factory>
...
<property name="hibernate.default_schema">myschema</property>
...
</session-factory>
</hibernate-configuration>
Run Code Online (Sandbox Code Playgroud)
现在我正在使用JPA,我想做同样的事情.否则我必须为schema每个@Table注释添加参数,如:
@Entity
@Table (name = "projectcategory", schema = "SCHEMANAME")
public class Category implements Serializable { ... }
Run Code Online (Sandbox Code Playgroud)
据我所知,这个参数应该在这部分配置的某个地方:
<bean id="domainEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="JiraManager"/>
<property name="dataSource" ref="domainDataSource"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl" value="false"/>
<property name="showSql" value="false"/>
<property name="databasePlatform" value="${hibernate.dialect}"/>
</bean>
</property>
</bean>
<bean id="domainDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${db.driver}" />
<property name="jdbcUrl" value="${datasource.url}" />
<property name="user" value="${datasource.username}" />
<property name="password" value="${datasource.password}" />
<property name="initialPoolSize" value="5"/>
<property …Run Code Online (Sandbox Code Playgroud) 我不仅想知道什么是Facet,还有什么是Facet'在物理层面'(据我所知,它不是一个单独的罐子,而是什么?)?
我也想知道在部署之后它如何影响我的应用程序.我会解释一下真实的例子:
我有2个方面(由IDE创建):Spring Facet和Web Facet(用于jsf).我将它部署到Tomcat,我的应用程序运行正常.
然后我(通过IDE)添加了一个方面 - JPA Facet.我重新部署了应用程序,它仍然工作正常:)
所以,我只是好奇这是什么,为什么我们需要它?
做下一件事最优雅的方法是什么:
int i = oneOrZero;
if (i == 0) {
i = 1;
} else {
i = 0;
}
Run Code Online (Sandbox Code Playgroud)
您可以假设i只能有1或0的值.
来自ImmutableList javadocs:
与Collections.unmodifiableList(java.util.List)不同,后者是一个仍然可以更改的单独集合的视图,ImmutableList的实例包含其自己的私有数据,并且永远不会更改.ImmutableList方便公共静态最终列表("常量列表"),还可以让您轻松地为调用者提供给您的类的列表的"防御性副本".
这是否意味着:
实际上,我找到了可能的解决方案
//returns true
new BigDecimal("5.50").doubleValue() == new BigDecimal("5.5").doubleValue()
Run Code Online (Sandbox Code Playgroud)
当然,它可以通过类似的Math.abs (v1 - v2) < EPS方式进行改进,使比较更加健壮,但问题是这种技术是否可以接受或是否有更好的解决方案?
如果有人知道为什么java设计师决定以这种方式实现BigDecimal的平等,那么阅读它会很有趣.
我从错误消息中读到了这个建议:
您应该考虑在应用程序中使用之前过期和/或测试连接有效性,增加服务器配置的客户端超时值,或使用Connector/J连接属性"autoReconnect = true"来避免此问题.
我正在使用Spring和JPA.我应该在哪里配置Connector/J?(在弹簧配置中persistence.xml,或在entityManagerFactory弹簧配置中,或在dateSource其他地方?)
我有xml文件.我需要阅读它,进行一些更改并将新的更改版本写入一些新目的地.
我设法读取,分析和修补这个文件(DocumentBuilderFactory,DocumentBuilder,Document等).
但我找不到如何保存该文件的方法.有没有办法让它的纯文本视图(as String)或更好的方式?
java ×9
spring ×3
jpa ×2
algorithm ×1
annotations ×1
bigdecimal ×1
boxing ×1
coding-style ×1
collections ×1
comparison ×1
database ×1
dom ×1
equals ×1
facet ×1
guava ×1
hibernate ×1
ide ×1
java-ee ×1
mysql ×1
performance ×1
terminology ×1
xml ×1