JPA
Entidades
Obrigatórios os métodos getters, setters, hashcode, equals e um construtor sem argumentos.Anotações
@Entity - anota uma classe.@Table - define o nome da tabela.
@Id - define um campo chave.
@GeneratedValue - autonumeração (@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column - Propriedades da coluna (@Column(name=”nome”, length = 60, nullable = false))
@Enumerated - Define um campo ENUM (@Enumerated(EnumType.STRING))
@Temporal - Define campo data (@Temporal(TemporalType.DATE))
@ManyToOne - Tipo de relacionamento entre tabelas (@ManyToOne(optional = false))
@JoinColumn -Nome da coluna do relacionamento (@JoinColumn(name = "entidade_id"))
Exemplo:
@Entity
@Table(name = "tbContato")
public class Contato {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(nullable = false)
private String name;
private String email;
private String phone;
@Column(nullable = false, insertable = false, updatable = true)
private Boolean status;
@Temporal(TemporalType.TIMESTAMP)
@Column(nullable = false, insertable = false, updatable = false)
private Date registrationDate;
persistence.xml
O arquivo persistence.xml deve ficar na pasta src/main/resources/META-INF, é criado automaticamente ao adicionar o Project Faces: JPA.Configuração de uma conexão com o MySql no persistence.xml
<persistence-unit name="ProjetoPU">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/banco" />
<property name="javax.persistence.jdbc.user" value="usuario" />
<property name="javax.persistence.jdbc.password" value="senha" />
<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
Gerar tabelas no banco
import javax.persistence.Persistence;public class CriaTabelas {
public static void main(String[] args) {
Persistence.createEntityManagerFactory("ProjetoPU");
}
}
Classe responsável por fornecer uma instância do EntityManager:
package util;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class JPAUtil {
private static final Logger LOGGER = LogManager.getLogger(JPAUtil.class.getName());
private static EntityManagerFactory factory;
static {
LOGGER.info("Criando um objeto factory de testJPAPU.");
factory = Persistence.createEntityManagerFactory("testJPAPU");
}
public static EntityManager getEntityManager() {
LOGGER.info("Objeto factory retornando uma instância de EntityManager.");
return factory.createEntityManager();
}
public static void close() {
LOGGER.info("Fechando o objeto factory.");
factory.close();
}
}
Nenhum comentário:
Postar um comentário