Question: I've recently read in one tutorial that Spring closes connection after transaction commit.

Is that true? I can't find anything about it in the Spring reference documentation.

What's the rationale behind it? Since now, I thought that there is a one-to-many relation between connection and transactions.

Answer: 
Spring calls `close()` when the transaction finishes which could be from either a commit or rollback. Whether or not `close()` actually closes a real JDBC connection depends on the `DataSource` configuration. If it's a plain JDBC connection, then it will actually close. If it is a connection pool then it will probably just be returned to the pool on close.
No, the connection is closed only when `SessionFactory` bean is destroyed.