Escenario
JPA 2.0
Hibernate 4.2.0
Tenemos la Clase A y Clase B, que representan el mapeo de las entidades: A, B y A_B. En una relación de muchos a muchos.
Implementación
Propietario: Clase B, por no tener mappedBy
Clase A {
...
private List<B> relAB;
...
@ManyToMany(mappedBy = "relBA", fetch = FetchType.LAZY)
public List<B> getRelAB() {
return this.relAB;
}
public void setRelAB(List<B> relAB) {
this.relAB = relAB;
}
...
}
Clase B {
...
private List<A> relBA;
...
@ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH })
@JoinTable(name = "A_B", joinColumns = { @JoinColumn(name = "idB") }, inverseJoinColumns = { @JoinColumn(name = "idA") })
public List<A> getRelBA() {
return this.relBA;
}
public void setRelBA(List<A> relBA) {
this.relBA = relBA;
}
...
}
Al colocar en el mapeo de la entidad cascade = { CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH }, le decimos al Hibernate que cuando sea llamado cualquiera de los tipos de cascade definidos (excepto REMOVE) no se eliminara los registros contenidos en la entidad A. Asimismo se realizaran el resto de las operaciones segun como corresponda (insert y update en las entidades A, B y A_B, el delete solo se efectuara en B y A_B)
Blog destinado a mostrar diversos tips relacionados a sistemas: base de datos, lenguajes de programación, etc.
viernes, 3 de mayo de 2013
jueves, 2 de mayo de 2013
Consultas ejecutadas en Shared SQL Area (Shared Pool)
Escenario
Oracle Database 11g Release 11.2.0.2.0
Implementación
Consulta para obtener información sobre las sentencias SQL y el usuario que las ha ejecutado.
La información mostrada corresponde al Shared SQL Area dentro del Shared Pool, por lo que Oracle ira desapareciendo las consultas menos utilizadas.
select distinct vs.sql_text, vs.sharable_mem,
vs.persistent_mem, vs.runtime_mem, vs.sorts,
vs.executions, vs.parse_calls, vs.module,
vs.buffer_gets, vs.disk_reads, vs.version_count,
vs.users_opening, vs.loads,
to_char(to_date(vs.first_load_time,
'YYYY-MM-DD/HH24:MI:SS'),'MM/DD HH24:MI:SS') first_load_time,
rawtohex(vs.address) address, vs.hash_value hash_value ,
rows_processed , vs.command_type, vs.parsing_user_id ,
OPTIMIZER_MODE , au.USERNAME parseuser
from v$sqlarea vs , all_users au
where (parsing_user_id != 0) AND
(au.user_id(+)=vs.parsing_user_id)
and (executions >= 1) order by buffer_gets/executions desc
Oracle Database 11g Release 11.2.0.2.0
Implementación
Consulta para obtener información sobre las sentencias SQL y el usuario que las ha ejecutado.
La información mostrada corresponde al Shared SQL Area dentro del Shared Pool, por lo que Oracle ira desapareciendo las consultas menos utilizadas.
select distinct vs.sql_text, vs.sharable_mem,
vs.persistent_mem, vs.runtime_mem, vs.sorts,
vs.executions, vs.parse_calls, vs.module,
vs.buffer_gets, vs.disk_reads, vs.version_count,
vs.users_opening, vs.loads,
to_char(to_date(vs.first_load_time,
'YYYY-MM-DD/HH24:MI:SS'),'MM/DD HH24:MI:SS') first_load_time,
rawtohex(vs.address) address, vs.hash_value hash_value ,
rows_processed , vs.command_type, vs.parsing_user_id ,
OPTIMIZER_MODE , au.USERNAME parseuser
from v$sqlarea vs , all_users au
where (parsing_user_id != 0) AND
(au.user_id(+)=vs.parsing_user_id)
and (executions >= 1) order by buffer_gets/executions desc
domingo, 28 de abril de 2013
Conexión de Visual Basic 6 con Access 2010
Escenario
Sistema Operativo: Windows 7 Enterprise
Lenguaje de Programación: Visual Basic 6.0
Base de Datos: Access 2010
Acceso a datos: Microsoft ADO 2.8 Library
Nombre de la base de datos: bd.accdb
Clave de la base de datos: 12345
Implementación
- Referenciar en Visual Basic: Microsoft Activex Data Objects 2.8 Library
- Escribir el siguiente código:
Cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & App.Path & "\bd.accdb;Jet OLEDB:Database Password=12345;"
Cn.Open Cn.ConnectionString, "admin", ""
Resaltar una fila en un MSFlexGrid (VB6)
Escenario
Sistema Operativo: Windows 7 Enterprise
Lenguaje de Programación: Visual Basic 6.0
Implementación
Public Sub pResaltarFila(ByVal poGrilla As MSFlexGrid)
Dim I As Long
With poGrilla
If .Rows = 0 Then Exit Sub
.Col = 0
.Row = .Row
.ColSel = .Cols - 1: .RowSel = .Row
.SetFocus
End With
End Sub
Centrar un Form en la pantalla (VB6)
Escenario
Sistema Operativo: Windows 7 Enterprise
Lenguaje de Programación: Visual Basic 6.0
Implementación
Public Sub Centrar(ByVal poForm As Form)
With poForm
.Move (Screen.Width - .Width) \ 2, (Screen.Height - .Height) \ 2
End With
End Sub
Dar formato en un MSFlexGrid (VB6)
Escenario
Sistema Operativo: Windows 7 Enterprise
Lenguaje de Programación: Visual Basic 6.0
Implementación
Private Sub pFormatoDeGrilla()
Dim I As Integer
With flg
'Añade fila
.AddItem ""
For I = 0 To 1
'Define cantidad de columnas
.Cols = I + 1
'Posiciona cursor en la primera fila para dar formato
.Col = I: .Row = 0
'Establece ancho de columnas
.ColWidth(I) = Choose(I + 1, 0, 1400)
'Establece alineación de columnas
.ColAlignment(I) = Choose(I + 1, 1, 1)
'Establece en negritas el titulo de cada cabecera
'de columna
.CellFontBold = True
'Establece el texto de cada cabecera de columna
.Text = Choose(I + 1, "Codigo", "Descripción")
Next I
End With
End Sub
Delay (Retraso) en Visual Basic 6
EscenarioSistema Operativo: Windows 7 Enterprise
Lenguaje de Programación: Visual Basic 6.0
Implementación
Public Sub pEsperarNSegundos(ByVal pnCtadSegundos As Integer)
Dim sFecha As String
sFecha = Format(Time, "hh:mm:ss")
Do While True
If DateDiff("s", sFecha, Format(Time, "hh:mm:ss")) > pnCtadSegundos Then
Exit Do
End If
Loop
End Sub
Llamada: mADO.Otros_pEsperarNSegundos 3 'Espera 3 segundos
Suscribirse a:
Entradas (Atom)