I'm looking to create a custom carbon component and there are a few choices for persistence. The main options appear to be JPA, or WSO2 data services.
The preferred way to access data in an SOA would be to use services. Basically, if you use JPA, your data access logic will be limited to the use of that specific component. If you use a solution like data services, then those services will be accessible globally, and thus enforce re-usability and a more consistent architecture.