16 Nisan 2018 Pazartesi

Envers Kullanımı

Giriş
Açıklaması şöyle.
You can use Envers to keep track of changes and display it to the user. Whether you use Envers or code the logic is a personal preference.

Revision entities have the same properties as your actual entities, so that may not suit your needs in future.
Maven
Şöyle yaparız.
<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-envers</artifactId>
  <version>${hibernate.version}</version>
</dependency>
Spring için şöyle yaparız
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-envers</artifactId>
</dependency>
Örnek - Spring
Envers kullanmak için iki tane anotasyonu belirmek lazım
1. @EnableJpaAuditing
2. @EnableJpaRepositories
3. @Audited
Şöyle yaparız
@EnableJpaAuditing
@EnableJpaRepositories(repositoryFactoryBeanClass =
  EnversRevisionRepositoryFactoryBean.class)
public class JpaEnversConfiguration {}
Eğer Envers düzgün çalışıyorsa çıktı olarak şunu görürüz
Envers integration enabled ? : true
Veri tabanına yeni kayıt eklersek audit tablosunda değişiklik görmek gerekir

Veri tabanı Tabloları
Envers için kullanılacak veri tabanı tablolarını yaratmak için iki seçenek var.
1. Hibernate'in yaratması. Şöyle yaparız
hibernate.ddl-auto = update
2. Elle yaratmak
revinfo tablosu yaratmak gerekir. Şöyle yaparız
CREATE TABLE revinfo
(
  rev integer NOT NULL,
  revtstmp bigint,
  CONSTRAINT revinfo_pkey PRIMARY KEY (rev)
)
Her entity için audit tablosu yaratmak gerekir.  Şöyle yaparız
CREATE TABLE student_aud
(
  id bigint NOT NULL,
  rev integer NOT NULL,
  revtype smallint,
  studentName character varying(255),
  CONSTRAINT student_aud_pkey PRIMARY KEY (id, rev),
  CONSTRAINT student_aud_revinfo FOREIGN KEY (rev)
  REFERENCES revinfo (rev) MATCH SIMPLE
  ON UPDATE NO ACTION ON DELETE NO ACTION
)
Açıklaması şöyle
When creating a audit table for above entity, hibernate adds the “_AUD” suffix to the table name of the audited entity.
Audit tablosunda fazladan iki sütun vardır. Açıklaması şöyle
Audit table must contain the primary key of the original entity, all audited fields, the revision number and the revision type. 

Hiç yorum yok:

Yorum Gönder