Al momento disponiamo di un sistema Java EE in cui mappiamo il nostro database utilizzando JPA. È un sistema abbastanza ben sviluppato con circa 20 entità.JPA e visualizzazioni tabella. Può essere fatto?
Ora ci è stato ordinato di utilizzare Views per tutto. Ad es .: se abbiamo un tavolo chiamato PERMISSION allora abbiamo anche bisogno di una vista chiamata PERMISSION_VIEW. Fondamentalmente abbiamo bisogno di fare questo a ogni tabella, e le nostre applicazioni possono accedere ai dati solo interrogando la vista.
Ora tutti i nostri bean di entità simile a questa:
@Entity
@Table(name = "PERMISSION")
@NamedQueries({
@NamedQuery(name = "Permission.findByPK", query = "SELECT p FROM Permission p WHERE p.dpNum = :dpNumber"),
@NamedQuery(name = "Permission.deleteAll", query = "DELETE FROM Permission") })
public class Permission implements Serializable {
}
- In primo luogo, come è possibile aggiornare le tabelle se si è solo permesso di utilizzare Visualizzazioni. Le viste materializzate possono funzionare per questo?
- In secondo luogo, quanta riscrittura sarà necessaria, se possiamo usare solo Views? Per esempio. Per ogni entità sarà necessario scrivere @Table (name = "PERMISSION_VIEW"), per descrivere l'entità, MA, quando si fa un aggiornamento è necessario farlo nella tabella PERMISSION. Come mai consolidi questo in un bean di entità?
scusate la domanda perplessa per favore, ma perché qualcuno dovrebbe voler fare questo? – kostja
Io lavoro in una grande organizzazione, e abbiamo alcune linee guida del database scritte da qualcuno da qualche parte che dice che ci viene richiesto di usare le viste, per motivi di sicurezza e di gestione. –
L'applicazione necessita chiaramente dell'accesso in scrittura al database. Non vedo quale sicurezza o altro vantaggio avvenga se le tue visualizzazioni contengono gli stessi dati delle tue tabelle. –