小编mvb*_*b13的帖子

连接和连接请求超时

我正在使用Http Apache Components来执行http交互.我需要调整我的http客户端.为此,我有两个参数:连接超时和连接请求超时.在库文档和源代码中(没有找到评论)我没有找到这个术语的定义.我需要知道它们究竟意味着什么.可能是他们在HTTP协议文档中定义但我找不到它.所以,我的问题是这两个术语是什么意思以及它们如何彼此区分.

java http apache-httpcomponents apache-httpclient-4.x

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

服务中的Spring事务和DAO层

在我的例子中,我有一个Hibernate实体和一个DAO.

@Entity
@Table(name="myEntity")
public class MyEntity {

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id")
    private long id;

    @Column(name="action")
    private String actionName;

}

...................

@Repository("myDAO")
@Transactional(propagation = Propagation.REQUIRED)
public class MyDAO {

    @Autowired
    private SessionFactory sessionFactory;

    public void saveObject(MyEntity myEntity){
        sessionFactory.getCurrentSession().save(myEntity);
    }

}
Run Code Online (Sandbox Code Playgroud)

当我以这种方式在服务中使用DAO时

@Service("myService")
@Transactional(propagation = Propagation.REQUIRED)
public class MyService 
{

    @Autowired
    private MyDAO myDAO;

    public void executeTransaction(){
        MyEntity myEntity = new MyEntity();

        myEntity.setActionName("Action1");
        myDAO.saveObject(myEntity);

//      myEntity = new MyEntity();
        myEntity.setActionName("Action2");
        myDAO.saveObject(myEntity);
    }

}
Run Code Online (Sandbox Code Playgroud)

数据库中只保存一行(Action2).当我删除注释时,两行(Action1和Action2)都被保存(这是我需要的行为).我的问题是服务层上的Transactional注释如何影响事务(方法executeTransaction())执行.为什么没有服务层上的Transactional注释,两行都保存在数据库中,只有最后一行保存在这个注释中?

java spring hibernate spring-transactions

6
推荐指数
1
解决办法
3825
查看次数

Spring jdbcTemplate 与 PreparedStatement。性能差异

我正在使用 Oracle 11g。我的A,B,C数据库中有 3 个表()A <one-many> B <many-one> C 我有一段代码,它执行三个插入:首先是 inAC,然后是 in B。这段代码执行了很多次( 200000) 并200000在每个表中进行插入操作。

我有两种插入方式:

  1. jdbc 准备好的语句:

    DataSource ds = jdbcTemplate.getDataSource();
    
    try (Connection connection = ds.getConnection();
         PreparedStatement statement = connection.prepareStatement(sql1);
         PreparedStatement statement2 = connection.prepareStatement(sql2);
         PreparedStatement statement3 = connection.prepareStatement(sql3);) {
    
         connection.setAutoCommit(false);
         final int batchSize = 20;
         int count = 0;
    
         for (int i=1; i<= total; i++ ) {
    
             // Define sql parameters
    
             statement.setString(1, p1);
    
             statement2.setString(1, p2);
             statement2.setString(2, p3);
    
             statement3.setInt(1, …
    Run Code Online (Sandbox Code Playgroud)

java sql spring

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

Java动态验证

我有一个带有某些字段(名字,姓氏,城市等)的实体对象。在一种情况下,我需要向该对象应用一组限制(非null,长度限制,唯一性等),而在另一种情况下,则应用另一组限制。目前,我正在使用自己的验证器,该验证器针对不同的用例具有不同的验证方法。

我可以通过其他方式(标准解决方案)执行验证吗?

我将Spring与Hibernate结合使用。在Hibernate中实现的JSR303标准无法解决我的问题,因为注释仅允许定义一组静态的限制。我无法在运行时重新定义它。

java validation

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

最好在db OffsetDateTime或Instant中保留

我想将一个时间戳值保存到postgres数据库中。对应的列是TIMESTAMP WITHTIME TIME ZONE的类型。输入的Java应用程序获取纪元时间(长值)时,可以使用ZoneOffset.UTC将其转换为Instant或OffsetDateTime。

最好的方法是什么?这种方法有什么缺点吗?

java postgresql java-time

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

不安全的compareAndSwapInt与同步

我发现几乎所有高级同步抽象(例如Semaphore,CountDownLatch,java.util.concurrent中的Exchanger)和并发集合都使用Unsafe中的方法(例如compareAndSwapInt方法)来定义关键部分。同时,我希望同步块或方法将用于此目的。您能否解释一下,不安全方法(我的意思是仅可以原子设置值的方法)比同步更有效,为什么会这样呢?

java concurrency unsafe java.util.concurrent

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

PropertySourcesPlaceholderConfigurer 和 PropertyPlaceholderConfigurer

我对遗留代码(它是 Spring 应用程序)进行了分析,发现两者都PropertySourcesPlaceholderConfigurerPropertyPlaceholderConfigurerSpring 上下文中初始化。我知道 Spring 上下文中应该只存在一个实例PropertyPlaceholderConfigurer。我的问题是这条规则是否同样适用于PropertySourcesPlaceholderConfigurerPropertyPlaceholderConfigurer。将两者放在上下文中是错误的吗?

java spring

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