For accessing Oracle 12c RAC database by JDBC to ensure high availability, should I use TAF or FCF?
In this case, should I use TAF or FCF?


TAF- Transparent Application Failover is a database session-level connection failover mechanism and works only for OCI clients. 

FCF- Fast Connection Failover is a application-level failover mechanism. It depends on the implicit connection cache feature and implicit connection caching must be enabled. 

TAF would be very useful for long running sessions whereas FCF is useful for pooled connections. 


  What I want is to preserve the JDBC connections and redirect them to another oracle database on the array. Also, can transactions preserved?


TAF will fail over standard SQL SELECT statements that have been caught during a node crash in an in-flight transaction failure. Transactions involving INSERT, UPDATE, or DELETE statements are not supported by TAF. 


  Besides, if TAF is suggested to be used, is it true that thick driver has to be used in JBoss?


Yes.

Reference:
Client Failover Best Practices - Oracle
Understanding How Fast Connection Failover Works
Comparison of TAF and Fast Connection Failover