Almacenamiento (en Oracle) de tipos Booleanos en java
Si te he entendido. No confundas como se asigna una variable con su representación interna.
El hecho de que tú escribas "boolean b = true" no quiere decir que la representación de un booleano sea un string (de hecho no escribes b = "true").
Además, las conversiones de tipos de java a SQL los realiza el driver JDBC, que suele ser bastante listo.
Cuando se diseñan tablas y se usa un char para recoger un boolean, es simplemente porque un char ocupa 1 byte, mientras que el entero más pequeño usará, seguramente, 2.
Así que, si quieres un método eficiente, prueba simplemente setBoolean() y getBoolean() en java, y tipo BIT en la BD.
Y echa un ojo a la documentación de Oracle (copio y pego):
"
11.3.4.2.2 getBoolean() Note
Because there is no BOOLEAN database type, when you use getBoolean() a datatype conversion always occurs. The getBoolean() method is supported only for numeric columns (BIT, TINYINT, SMALLINT, INTEGER, BIGINT, REAL, FLOAT, DOUBLE, DECIMAL, NUMERIC, CHAR, VARCHAR, or LONGVARCHAR). When applied to these columns, getBoolean() interprets any zero (0) value as false, and any other value as true. When applied to any other sort of column, getBoolean() raises the exception java.lang.NumberFormatExceptionCheck with Longxing!.
"