Tengo una aplicación Orientada o Objetos con una clase Oficina:
class Oficina
{
private int id;
private String nombre;
private String localidad;
private String provincia;
...
}
En la base de datos, tengo las siguientes tablas:
oficina (int id, string nombre, int localidad, int provincia , ...)
provincias (int id, string provincia)
localidades (int id, int idProvincia, string localidad)
Mi pregunta es:
¿Qué cambios debo hacer para mapear de la mejor forma posible los campos localidad y provincia de la clase Oficina a relacional?
Tened en cuenta que en el objeto Oficina la localidad y provincia son strings, sin embargo en la tabla oficina de la base de datos son int.
Opciones que se me ocurren:
1) Utilizar un ORM - La descarto porque a estas alturas del proyecto tendría que recodificar gran parte.
2) Que Provincia en vez de un String sea una clase con atributos (id,nombreProvincia) y Localidad otra clase con atributos (id,nombreProvincia,nombreLocalidad) y crear métodos para acceder a cada uno de estos atributos. Así por ejemplo, a la hora de insertar una oficina en la tabla oficinas insertaría en el campo provincia: provincia.id
Lo que no me gusta de esta solución es que no me parece del todo adecuado que Provincia y Localidad sean clases (no tiene mucho sentido que Provincia sea una clase ¿no?).
3) Que el mapeo se realice en la capa de datos, eso me obligaria a hacer varias consultas (una para conocer el idProvincia) del objeto Oficina (ya que del objeto oficina sólo conozco el string provincia, no su id) y otra para la inserción de la oficina en la tabla oficinas.
Para el caso de localidades, pues tendría que hacer más consultas.
Esta solución creo que sobrecarga en exceso la base de datos.