public void loadPlanetRef(ObjetivoDO objetivo) throws SQLException {
    // XXX: Check this method's semantic
    checkClass(objetivo, ObjetivoDO.class, CHECK_UPDATE);

    PlanetaDAO planetaDAO = new PlanetaDAO();
    planetaDAO.init(connectionBean);

    //		    PlanetaDAO planetaDAO = (PlanetaDAO) FactoryDAO.getDAO(//
    //		    		PlanetaDAO.class, connectionBean) throws ClassNotFoundException, Exception;
    // unmanageable exceptions...

    Reference<PlanetaDO> ref = objetivo.getPlanetaRef();

    // ----------------------------------------
    // If ident == 0 there is nothing to do
    // ----------------------------------------

    if (ref.getRefIdent() == 0) {
      return;
    }

    PlanetaDO planetaDO = //
        (PlanetaDO) planetaDAO.loadById(ref.getRefIdent());

    ref.setRefValue(planetaDO);
  }
  @Override
  public void insert(DataObject dataObject) throws SQLException {
    checkCache(dataObject, CHECK_INSERT);
    checkClass(dataObject, ObjetivoDO.class, CHECK_INSERT);

    ObjetivoDO objetivoDO = (ObjetivoDO) dataObject;

    objetivoDO.setId(getNextId());

    StringBuffer strbuf = new StringBuffer();

    strbuf.append("INSERT INTO ");
    strbuf.append(getTableName());
    strbuf.append(" VALUES (");
    strbuf.append(objetivoDO.getId());
    strbuf.append(", ");
    strbuf.append(singleQuotes(objetivoDO.getDescripcion()));
    strbuf.append(", ");
    strbuf.append(objetivoDO.getNumeroDeNpc());
    strbuf.append(", ");
    Reference<PlanetaDO> refPl = objetivoDO.getPlanetaRef();
    refPl.checkInsert();
    strbuf.append(refPl.getIdAsString());
    strbuf.append(")");

    System.err.println(strbuf.toString());

    connection.createStatement().execute(strbuf.toString());

    dtaSession.add(dataObject);
  }
  @Override
  public void update(DataObject dataObject) throws SQLException {
    checkCache(dataObject, CHECK_UPDATE);
    checkClass(dataObject, NivelHabilidadDO.class, CHECK_UPDATE);

    NivelHabilidadDO nivelHabilidadDO = (NivelHabilidadDO) dataObject;

    StringBuffer strbuf = new StringBuffer();

    strbuf.append("UPDATE ");
    strbuf.append(getTableName());
    strbuf.append(" SET ");

    strbuf.append(NivelHabilidadDO.NIVEL_DE_HABILIDAD);
    strbuf.append(" = ");
    strbuf.append(nivelHabilidadDO.getEfectividad());

    strbuf.append(", ");

    strbuf.append(NivelHabilidadDO.COSTO_DE_ENERGIA);
    strbuf.append(" = ");
    strbuf.append(nivelHabilidadDO.getCostoDeEnergia());

    strbuf.append(", ");

    strbuf.append(NivelHabilidadDO.PROBABILIDAD);
    strbuf.append(" = ");
    strbuf.append(nivelHabilidadDO.getProbabilidad());

    strbuf.append(", ");

    strbuf.append(NivelHabilidadDO.HABILIDAD_ID);
    strbuf.append(" = ");
    Reference<HabilidadDO> refP = nivelHabilidadDO.getHabilidadRef();
    refP.checkUpdate();
    strbuf.append(refP.getIdAsString());

    strbuf.append(", ");

    strbuf.append(" WHERE ");
    strbuf.append(NivelHabilidadDO.ID);
    strbuf.append(" = ");
    strbuf.append(nivelHabilidadDO.getId());

    System.err.println(strbuf.toString());

    connection.createStatement().execute(strbuf.toString());
  }
  public void loadHabilidadRef(NivelHabilidadDO nivelHabilidadDO) throws SQLException {
    // XXX: Check this method's semantic
    checkClass(nivelHabilidadDO, NivelHabilidadDO.class, CHECK_UPDATE);

    HabilidadDAO habilidadDAO = new HabilidadDAO();
    habilidadDAO.init(connectionBean);

    Reference<HabilidadDO> ref = nivelHabilidadDO.getHabilidadRef();

    if (ref.getRefIdent() == 0) {
      return;
    }

    HabilidadDO habilidadDO = //
        (HabilidadDO) habilidadDAO.loadById(ref.getRefIdent());

    ref.setRefValue(habilidadDO);
  }
  @Override
  public void update(DataObject dataObject) throws SQLException {
    checkCache(dataObject, CHECK_UPDATE);
    checkClass(dataObject, ObjetivoDO.class, CHECK_UPDATE);

    ObjetivoDO objetivoDO = (ObjetivoDO) dataObject;

    StringBuffer strbuf = new StringBuffer();

    strbuf.append("UPDATE ");
    strbuf.append(getTableName());
    strbuf.append(" SET ");

    strbuf.append(ObjetivoDO.DESCRIPCION);
    strbuf.append(" = ");
    strbuf.append(singleQuotes(objetivoDO.getDescripcion()));

    strbuf.append(", ");

    strbuf.append(ObjetivoDO.NUMERO_DE_NPC);
    strbuf.append(" = ");
    strbuf.append(objetivoDO.getNumeroDeNpc());

    strbuf.append(", ");

    strbuf.append(ObjetivoDO.PLANETA_ID);
    strbuf.append(" = ");
    Reference<PlanetaDO> refPl = objetivoDO.getPlanetaRef();
    refPl.checkUpdate();
    strbuf.append(refPl.getIdAsString());

    strbuf.append(" WHERE ");
    strbuf.append(ObjetivoDO.ID);
    strbuf.append(" = ");
    strbuf.append(objetivoDO.getId());

    System.err.println(strbuf.toString());

    connection.createStatement().execute(strbuf.toString());
  }
  private ObjetivoDO resultSetToDO(ResultSet rs) throws SQLException {
    ObjetivoDO ret = //
        (ObjetivoDO)
            dtaSession.getDtaByKey( //
                ObjetivoDO.class, rs.getInt(ObjetivoDO.ID));

    if (ret != null) {
      return ret;
    }

    ret = new ObjetivoDO();

    ret.setId /*     					*/(rs.getInt(ObjetivoDO.ID));
    ret.setDescripcion /*				*/(rs.getString(ObjetivoDO.DESCRIPCION));
    ret.setNumeroDeNpc /*	            */(rs.getInt(ObjetivoDO.NUMERO_DE_NPC));

    Reference<PlanetaDO> refPl = new Reference<PlanetaDO>();
    refPl.setRefIdent(rs.getInt(ObjetivoDO.PLANETA_ID));
    ret.setPlanetaRef(refPl);

    return (ObjetivoDO) dtaSession.add(ret);
  }
  @Override
  public void insert(DataObject dataObject) throws SQLException {
    checkCache(dataObject, CHECK_INSERT);
    checkClass(dataObject, NivelHabilidadDO.class, CHECK_INSERT);

    NivelHabilidadDO nivelHabilidadDO = (NivelHabilidadDO) dataObject;

    nivelHabilidadDO.setId(getNextId());

    StringBuffer strbuf = new StringBuffer();

    strbuf.append("INSERT INTO ");
    strbuf.append(getTableName());
    strbuf.append(" VALUES (");
    strbuf.append(nivelHabilidadDO.getId()); // INSTANCIA
    strbuf.append(", ");
    strbuf.append(nivelHabilidadDO.getNivelDeHabilidad());
    strbuf.append(", ");
    strbuf.append(nivelHabilidadDO.getEfectividad());
    strbuf.append(", ");
    strbuf.append(nivelHabilidadDO.getCostoDeEnergia());
    strbuf.append(", ");
    strbuf.append(nivelHabilidadDO.getProbabilidad());
    strbuf.append(", ");

    Reference<HabilidadDO> refU = nivelHabilidadDO.getHabilidadRef();
    refU.checkInsert();
    strbuf.append(refU.getIdAsString());

    strbuf.append(")");

    System.err.println(strbuf.toString());

    connection.createStatement().execute(strbuf.toString());

    dtaSession.add(dataObject);
  }
  private NivelHabilidadDO resultSetToDO(ResultSet rs) throws SQLException {
    NivelHabilidadDO ret = //
        (NivelHabilidadDO)
            dtaSession.getDtaByKey( //
                NivelHabilidadDO.class, rs.getInt(NivelHabilidadDO.ID));

    if (ret != null) {
      return ret;
    }

    ret = new NivelHabilidadDO();

    ret.setId /*     			*/(rs.getInt(PersonajeDO.ID));
    ret.setNivelDeHabilidad /*	*/(rs.getInt(NivelHabilidadDO.NIVEL_DE_HABILIDAD));
    ret.setEfectividad /*	    */(rs.getInt(NivelHabilidadDO.EFECTIVIDAD));
    ret.setCostoDeEnergia /*	    */(rs.getInt(NivelHabilidadDO.COSTO_DE_ENERGIA));
    ret.setProbabilidad /*		*/(rs.getInt(NivelHabilidadDO.PROBABILIDAD));

    Reference<HabilidadDO> refU = new Reference<HabilidadDO>();
    refU.setRefIdent(rs.getInt(NivelHabilidadDO.HABILIDAD_ID));
    ret.setHabilidadRef(refU);

    return (NivelHabilidadDO) dtaSession.add(ret);
  }