# viniciuslinsgit/locadora architecture

> Architecture diagram of the GitHub repository viniciuslinsgit/locadora, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/viniciuslinsgit/locadora
- Repository: https://github.com/viniciuslinsgit/locadora

## Overview

This is a JavaServer Faces movie-catalog application: users can register films, actors, and genres, with JavaBeans coordinating entity-specific DAOs and JPA-backed domain entities. The sampled code shows the bean-to-DAO and DAO-to-JPA factory calls, plus film associations to actors and genres. The XHTML pages and persistence configuration were not sampled, so links from page submissions to beans and from JPA to a backing store are not asserted.

Main entry points: [`src/br/com/aula/dao/AtorDAO.java`](https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/dao/AtorDAO.java) (Actor DAO), [`src/br/com/aula/dao/FilmeDAO.java`](https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/dao/FilmeDAO.java) (Film DAO), [`src/br/com/aula/dao/GeneroDAO.java`](https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/dao/GeneroDAO.java) (Genre DAO), [`src/br/com/aula/model/Filme.java`](https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/model/Filme.java) (Film entity)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web interface"]
  node_home["Home page<br/>[index.xhtml]"]
  node_actorform["Actor form"]
  node_filmform["Film form"]
  node_genreform["Genre form"]
end

subgraph group_app["Application actions"]
  node_actorbean["Actor actions<br/>[AtorBean.java]"]
  node_filmbean["Film actions<br/>[FilmeBean.java]"]
  node_genrebean["Genre actions<br/>[GeneroBean.java]"]
end

subgraph group_data["Persistence and domain"]
  node_actordao["Actor DAO<br/>[AtorDAO.java]"]
  node_actorif["Actor DAO contract<br/>[AtorDaoIF.java]"]
  node_filmedao["Film DAO<br/>[FilmeDAO.java]"]
  node_filmif["Film DAO contract<br/>[FilmeDaoIF.java]"]
  node_genredao["Genre DAO<br/>[GeneroDAO.java]"]
  node_genreif["Genre DAO contract<br/>[GeneroDaoIF.java]"]
  node_genericif["Generic DAO contract<br/>[GenericDaoIF.java]"]
  node_actor["Actor entity<br/>[Ator.java]"]
  node_film["Film entity<br/>[Filme.java]"]
  node_genre["Genre entity<br/>[Genero.java]"]
  node_jpafactory["JPA factory<br/>[JPAFactory.java]"]
end

node_user(("User"))

node_user -.->|"opens"| node_home
node_user -.->|"submits"| node_actorform
node_user -.->|"submits"| node_filmform
node_user -.->|"submits"| node_genreform
node_actorform -.->|"invokes"| node_actorbean
node_filmform -.->|"invokes"| node_filmbean
node_genreform -.->|"invokes"| node_genrebean
node_actorbean -->|"calls"| node_actordao
node_filmbean -->|"calls"| node_filmedao
node_genrebean -->|"calls"| node_genredao
node_actordao -->|"creates managers"| node_jpafactory
node_filmedao -->|"creates managers"| node_jpafactory
node_genredao -->|"creates managers"| node_jpafactory
node_actordao -->|"queries and persists"| node_actor
node_filmedao -->|"queries and persists"| node_film
node_genredao -->|"queries and persists"| node_genre
node_film -->|"associates"| node_actor
node_film -->|"associates"| node_genre
node_actordao -->|"implements"| node_actorif
node_filmedao -->|"implements"| node_filmif
node_genredao -->|"implements"| node_genreif
node_actorif -->|"extends"| node_genericif
node_filmif -->|"extends"| node_genericif
node_genreif -->|"extends"| node_genericif

click node_home "https://github.com/viniciuslinsgit/locadora/blob/master/WebContent/index.xhtml"
click node_actorform "https://github.com/viniciuslinsgit/locadora/blob/master/WebContent/pages/cadastrarAtor.xhtml"
click node_filmform "https://github.com/viniciuslinsgit/locadora/blob/master/WebContent/pages/cadastrarFilme.xhtml"
click node_genreform "https://github.com/viniciuslinsgit/locadora/blob/master/WebContent/pages/cadastrarGenero.xhtml"
click node_actorbean "https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/bean/AtorBean.java"
click node_filmbean "https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/bean/FilmeBean.java"
click node_genrebean "https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/bean/GeneroBean.java"
click node_actordao "https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/dao/AtorDAO.java"
click node_actorif "https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/dao/AtorDaoIF.java"
click node_filmedao "https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/dao/FilmeDAO.java"
click node_filmif "https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/dao/FilmeDaoIF.java"
click node_genredao "https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/dao/GeneroDAO.java"
click node_genreif "https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/dao/GeneroDaoIF.java"
click node_genericif "https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/dao/GenericDaoIF.java"
click node_actor "https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/model/Ator.java"
click node_film "https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/model/Filme.java"
click node_genre "https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/model/Genero.java"
click node_jpafactory "https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/util/JPAFactory.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_home,node_actorform,node_filmform,node_genreform,node_user toneBlue
class node_actorbean,node_filmbean,node_genrebean toneAmber
class node_actordao,node_actorif,node_filmedao,node_filmif,node_genredao,node_genreif,node_genericif,node_actor,node_film,node_genre,node_jpafactory toneMint
```

## Components

### Web interface

- [Home page](https://github.com/viniciuslinsgit/locadora/blob/master/WebContent/index.xhtml): `WebContent/index.xhtml`
- [Actor form](https://github.com/viniciuslinsgit/locadora/blob/master/WebContent/pages/cadastrarAtor.xhtml): `WebContent/pages/cadastrarAtor.xhtml`
- [Film form](https://github.com/viniciuslinsgit/locadora/blob/master/WebContent/pages/cadastrarFilme.xhtml): `WebContent/pages/cadastrarFilme.xhtml`
- [Genre form](https://github.com/viniciuslinsgit/locadora/blob/master/WebContent/pages/cadastrarGenero.xhtml): `WebContent/pages/cadastrarGenero.xhtml`

### Application actions

- [Actor actions](https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/bean/AtorBean.java): `src/br/com/aula/bean/AtorBean.java`
- [Film actions](https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/bean/FilmeBean.java): `src/br/com/aula/bean/FilmeBean.java`
- [Genre actions](https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/bean/GeneroBean.java): `src/br/com/aula/bean/GeneroBean.java`

### Persistence and domain

- [Actor DAO](https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/dao/AtorDAO.java): `src/br/com/aula/dao/AtorDAO.java`
- [Actor DAO contract](https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/dao/AtorDaoIF.java): `src/br/com/aula/dao/AtorDaoIF.java`
- [Film DAO](https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/dao/FilmeDAO.java): `src/br/com/aula/dao/FilmeDAO.java`
- [Film DAO contract](https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/dao/FilmeDaoIF.java): `src/br/com/aula/dao/FilmeDaoIF.java`
- [Genre DAO](https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/dao/GeneroDAO.java): `src/br/com/aula/dao/GeneroDAO.java`
- [Genre DAO contract](https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/dao/GeneroDaoIF.java): `src/br/com/aula/dao/GeneroDaoIF.java`
- [Generic DAO contract](https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/dao/GenericDaoIF.java): `src/br/com/aula/dao/GenericDaoIF.java`
- [Actor entity](https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/model/Ator.java): `src/br/com/aula/model/Ator.java`
- [Film entity](https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/model/Filme.java): `src/br/com/aula/model/Filme.java`
- [Genre entity](https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/model/Genero.java): `src/br/com/aula/model/Genero.java`
- [JPA factory](https://github.com/viniciuslinsgit/locadora/blob/master/src/br/com/aula/util/JPAFactory.java): `src/br/com/aula/util/JPAFactory.java`

### Other components

- **User**

## Connections

- User → Home page: opens
- User → Actor form: submits
- User → Film form: submits
- User → Genre form: submits
- Actor form → Actor actions: invokes
- Film form → Film actions: invokes
- Genre form → Genre actions: invokes
- Actor actions → Actor DAO: calls (evidence: `src/br/com/aula/bean/AtorBean.java`)
- Film actions → Film DAO: calls (evidence: `src/br/com/aula/bean/FilmeBean.java`)
- Genre actions → Genre DAO: calls (evidence: `src/br/com/aula/bean/GeneroBean.java`)
- Actor DAO → JPA factory: creates managers (evidence: `src/br/com/aula/dao/AtorDAO.java`)
- Film DAO → JPA factory: creates managers (evidence: `src/br/com/aula/dao/FilmeDAO.java`)
- Genre DAO → JPA factory: creates managers (evidence: `src/br/com/aula/dao/GeneroDAO.java`)
- Actor DAO → Actor entity: queries and persists (evidence: `src/br/com/aula/dao/AtorDAO.java`)
- Film DAO → Film entity: queries and persists (evidence: `src/br/com/aula/dao/FilmeDAO.java`)
- Genre DAO → Genre entity: queries and persists (evidence: `src/br/com/aula/dao/GeneroDAO.java`)
- Film entity → Actor entity: associates (evidence: `src/br/com/aula/model/Filme.java`)
- Film entity → Genre entity: associates (evidence: `src/br/com/aula/model/Filme.java`)
- Actor DAO → Actor DAO contract: implements (evidence: `src/br/com/aula/dao/AtorDAO.java`)
- Film DAO → Film DAO contract: implements (evidence: `src/br/com/aula/dao/FilmeDAO.java`)
- Genre DAO → Genre DAO contract: implements (evidence: `src/br/com/aula/dao/GeneroDAO.java`)
- Actor DAO contract → Generic DAO contract: extends (evidence: `src/br/com/aula/dao/AtorDaoIF.java`)
- Film DAO contract → Generic DAO contract: extends (evidence: `src/br/com/aula/dao/FilmeDaoIF.java`)
- Genre DAO contract → Generic DAO contract: extends (evidence: `src/br/com/aula/dao/GeneroDaoIF.java`)
