In first line I would check with following code if your jdbc-driver is supporting BatchUpdates at all.
(not all drivers do effectively implements this feature).
Code:
Class.forName("org.postgresql.Driver");
java.sql.Connection con = java.sql.DriverManager.getConnection("your_connectionUrl",userName,password);
boolean supportsbatchinserts_updates = con.getMetaData().supportsBatchUpdates());
con.close();
Anyway I guess that the bottleneck is the database itself.
Create some stack with jstack during the half minute the application is running.
Then look at the stacktraces you got.
If the stacks are almost always executing in socketRead or socketWrite,
then it is effectively the database (or a extremely slow network) which is the bottleneck.