If you want control over the used SQL and remain close to JDBC in general, you may be interested in MyBatis, which let's you write your own queries and provides a framework for "automatically" mapping ResultSets to POJOs based on XML- or annotation-based metadata.
A select would look like this in XML:
<select id="selectUsers" parameterType="int" resultType="my.User">
select id, username, password
from users
where id = #{id}
</select>
This would be mapped to a user like this:
<resultMap id="userResultMap" type="my.User">
<id property="id" column="id" />
<result property="username" column="user_name"/>
<result property="password" column="hashed_password"/>
</resultMap>
With the properties being Bean properties in the POJO my.User