Closed angel96 closed 5 years ago
Anotaciones de Entidades
@Entity @Access(AccessType.PROPERTY) @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Access(AccesType.PROPERTY) > Le decimos a spring que vamos a utilizar los getters y setters.
@Inheritance > Herencia @Inheritance (strategy = InheritanceType.TABLE_PER_CLASS)
@Id > Identificador en la BBDD @GeneratedValue(strategy = GenerationType.TABLE) > Delegamos la estrategia de generar el Id unico a la base de datos.
@Version > Actualizaciones de esa entidad por versión
Cuando redefinimos el equals, el hashcode también.
@Embeddable > Clase embebible. Los atributos se van a meter en la tabla.
@ElementCollection > IMPORTANTE ponerlo si hacemos un collection de datatypes
@OneToMany A B 1 -> 1..*
Composicion > Recordar el ejemplo del ordenador (Para existir un objeto ordenador tiene que existir todos sus componentes)
mappedBy > Poner en una de las dos relaciones Ejemplo: Reviewer (Collection de announcement - OneToMany) y Announcement (El collection de announcement tiene un unico reviewer - ManyToOne)
Unique > @Column(unique = true) Varios uniques > @Table(uniqueConstraints = @UniqueConstraint(columnNames = {"databaseColumn1", "databaseColumn2"}))
@Temporal(TemporalType.TIMESTAMP) > Para fechas
@Transient > Atributos derivados que no queremos persistir.
Con funciones de agregacion (count, match...) > groupBy en la query JPQL Condiciones con funciones de agregacion > having count(r) >= 3
FIJAROS QUE LA TABLA DE LA SENTENCIA JPQL ESTA ESCRITA CON EL NOMBRE DE LA CLASE JAVA, NO CON EL NOMBRE Y EL FORMATO QUE SE REGISTRA EN MYSQL.
select a from Administrator a ; 1 object selected Actor [name=Administrator1, middleName=Administrator1Middle, surname=Administrator1Surname, photo=https://www.photo.com, email=admin<administrator@>, phone=954152635, numberProfiles=2] domain.DomainEntity::id: int = 44 domain.DomainEntity::version: int = 0 domain.Actor::name: java.lang.String = "Administrator1" domain.Actor::middleName: java.lang.String = "Administrator1Middle" domain.Actor::surname: java.lang.String = "Administrator1Surname" domain.Actor::photo: java.lang.String = "https://www.photo.com" domain.Actor::email: java.lang.String = "admin<administrator@>" domain.Actor::phone: java.lang.String = "954152635" domain.Actor::adress: java.lang.String = "C/Reina Mercedes" domain.Actor::numberProfiles: java.lang.Integer = 2 domain.Actor::account: security.UserAccount = security.UserAccount{id=23, version=0} domain.Actor::profiles: java.util.Collection = [domain.Profile{id=38, version=0}, domain.Profile{id=39, version=0}] domain.Actor::message: java.util.Collection = [] domain.Actor::ban: boolean = false
@NotBlank lo usamos para cadenas. @NotNull lo utilizamos para comprobar que los tipos no sean nulos.
drop database if exists Acme-HandyWork
;
create database Acme-HandyWork
;
create user 'acme-user'@'%' identified by 'ACME-Us3r-P@ssw0rd';
create user 'acme-manager'@'%' identified by 'ACME-M@n@ger-6874';
grant select, insert, update, delete
on Acme-HandyWork
. to 'acme-user'@'%';
grant select, insert, update, delete, create, drop, references, index, alter,
create temporary tables, lock tables, create view, create routine,
alter routine, execute, trigger, show view
on Acme-HandyWork
. to 'acme-manager'@'%';
Variables booleanas no pueden comenzar por 'is'. Deben tener otro nombre distinto porque si no el setter no lo coge bien Spring.
El @autowired se coloca a cada servicio que llamemos
No colocar ningun toString en las entidades. Provoca StackOverFlow a la hora de cargar el PopulateDatabase
Si un formulario falla, comprobar que tiene el <form:hidden ... >
Usar placeholders
Errata en diapositiva
ADVERTENCIA: VER ESTA ISSUE EN MODO EDICION Paso 1.
Paso 2.
</form:label>
Paso 3.
El atributo del formulario:
modelAttribute = "announcement"
El nombre de la variable que le pasamos al metodo controlador:
@Valid Announcement announcement
Tienen que llamarse igual para que la validación en formulario funcione
Pagina util para realizar patterns
Dadle a editar issue para ver como escribir los caracteres.
Para notacion XML
" " ' ' < <