The key to remember when accessing data in a SOA is to ensure that the business logic and data access code are separated. This keeps the business logic as simple as possible, and focused on solving the problems of the business. This separation also provides flexibility, allowing the business logic to remain unchanged even if changes occur in the way the data is accessed.
The Data Access Object (DAO) pattern is a common approach to keeping the data access code separated from the business logic. The DAO may be implemented using JDBC / ODBC or other means.
The separation of the business logic from the data access logic is a logical division. This separation typically is not a physical separation, allowing both to reside on the same tier. The physical division is between the DAO and the data itself. Therefore, this pattern is also effective when building client/server applications.