Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package searchengine.model;
- import jakarta.persistence.*;
- import lombok.Data;
- import lombok.NoArgsConstructor;
- @Entity
- @Table(name = "search_index", indexes = {@Index(name = "lemma_id_FK", columnList = "lemma_id"), @Index(name = "page_id_FK", columnList = "page_id")})
- @Data
- @NoArgsConstructor
- public class IndexEntity {
- @Id
- @TableGenerator(
- name = "indexEntityGen", // Уникальное имя генератора
- table = "indexIdGen", // Название таблицы для хранения идентификаторов
- pkColumnName = "indexKeyGen", // Название столбца с ключом генератора
- valueColumnName = "indexNextValGen", // Название столбца со значением следующего идентификатора
- pkColumnValue = "IndexEntity", // Значение, связанное с этим генератором
- allocationSize = 200 // Количество идентификаторов, выделяемых за один раз
- )
- @GeneratedValue(strategy = GenerationType.TABLE, generator = "indexEntityGen")
- private int id;
- @ManyToOne(fetch = FetchType.LAZY, optional = false, cascade = CascadeType.REFRESH)
- @JoinColumn(foreignKey = @ForeignKey(name = "FK_index_page_id"), name = "page_id", nullable = false)
- private PageEntity page;
- @ManyToOne(fetch = FetchType.LAZY, optional = false, cascade = CascadeType.REFRESH)
- @JoinColumn(foreignKey = @ForeignKey(name = "FK_index_lemma_id"), name = "lemma_id", nullable = false)
- private LemmaEntity lemmaEntity;
- @Column
- private int ranking;
- public IndexEntity(PageEntity page, LemmaEntity LemmaEntity, int rank) {
- this.page = page;
- this.lemmaEntity = LemmaEntity;
- this.ranking = rank;
- }
- }
- ------------------------------------------------------------------------------------------------------
- package searchengine.model;
- import jakarta.persistence.*;
- import lombok.Data;
- import lombok.NoArgsConstructor;
- @Entity
- @Table(name = "lemma",indexes = {@Index(name = "lemma_string_FK",columnList = "lemma")})
- @Data
- @NoArgsConstructor
- public class LemmaEntity {
- @Id
- @TableGenerator(
- name = "lemmaEntityGen", // Уникальное имя генератора
- table = "lemmaIdGen", // Название таблицы для хранения идентификаторов
- pkColumnName = "lemmaKeyGen", // Название столбца с ключом генератора
- valueColumnName = "lemmaNextValGen", // Название столбца со значением следующего идентификатора
- pkColumnValue = "LemmaEntity", // Значение, связанное с этим генератором
- allocationSize = 200 // Количество идентификаторов, выделяемых за один раз
- )
- @GeneratedValue(strategy = GenerationType.TABLE, generator = "lemmaEntityGen")
- private int id;
- @ManyToOne(cascade = CascadeType.REFRESH,fetch = FetchType.LAZY)
- private SiteEntity site;
- @Column(columnDefinition = "VARCHAR(255)")
- private String lemma;
- private int frequency;
- public LemmaEntity(SiteEntity Site, String lemma, int frequency) {
- this.site = Site;
- this.lemma = lemma;
- this.frequency = frequency;
- }
- @Override
- public String toString() {
- return lemma;
- }
- }
- ------------------------------------------------------------------------------------------------------
- package searchengine.model;
- import jakarta.persistence.*;
- import lombok.Data;
- import lombok.NoArgsConstructor;
- @Entity
- @Table(name = "page", indexes = @Index(columnList = "path"))
- @Data
- @NoArgsConstructor
- public class PageEntity {
- @Id
- @TableGenerator(
- name = "pageEntityGen", // Уникальное имя генератора
- table = "pageIdGen", // Название таблицы для хранения идентификаторов
- pkColumnName = "pageKeyGen", // Название столбца с ключом генератора
- valueColumnName = "pageNextValGen", // Название столбца со значением следующего идентификатора
- pkColumnValue = "PageEntity", // Значение, связанное с этим генератором
- allocationSize = 200 // Количество идентификаторов, выделяемых за один раз
- )
- @GeneratedValue(strategy = GenerationType.TABLE, generator = "pageEntityGen")
- private int id;
- @ManyToOne(cascade = CascadeType.REFRESH,fetch = FetchType.LAZY)
- @JoinColumn(nullable = false)
- private SiteEntity site;
- @Column(columnDefinition = "VARCHAR(255)", nullable = false)
- private String path;
- @Column(nullable = false)
- private int code;
- @Column(columnDefinition = "MEDIUMTEXT", nullable = false)
- private String content;
- @Enumerated(EnumType.STRING)
- private PageStatus pageStatus;
- public PageEntity(SiteEntity Site, String path, int code, String content, PageStatus pageStatus) {
- this.site = Site;
- this.path = path;
- this.code = code;
- this.content = content;
- this.pageStatus = pageStatus;
- }
- @Override
- public String toString() {
- return "id: " + id + " path: " + path;
- }
- }
- --------------------------------------------------------------
- package searchengine.model;
- import jakarta.persistence.*;
- import lombok.Data;
- import lombok.NoArgsConstructor;
- import java.time.LocalDateTime;
- @Entity
- @Table(name = "site")
- @Data
- @NoArgsConstructor
- public class SiteEntity {
- private static final String VARCHAR_TYPE = "VARCHAR(255)";
- @Id
- @TableGenerator(
- name = "siteEntityGen", // Уникальное имя генератора
- table = "siteIdGen", // Название таблицы для хранения идентификаторов
- pkColumnName = "siteKeyGen", // Название столбца с ключом генератора
- valueColumnName = "siteNextValGen", // Название столбца со значением следующего идентификатора
- pkColumnValue = "SiteEntity", // Значение, связанное с этим генератором
- allocationSize = 200 // Количество идентификаторов, выделяемых за один раз
- )
- @GeneratedValue(strategy = GenerationType.TABLE, generator = "siteEntityGen")
- private int id;
- @Enumerated(EnumType.STRING)
- private SiteStatus status;
- @Column(name = "status_time", nullable = false)
- private LocalDateTime statusTime;
- @Column(name = "last_error", columnDefinition = "TEXT")
- private String lastError;
- @Column(columnDefinition = VARCHAR_TYPE, nullable = false)
- private String url;
- @Column(columnDefinition = VARCHAR_TYPE, nullable = false)
- private String name;
- public SiteEntity(SiteStatus status, LocalDateTime statusTime, String lastError, String url, String name) {
- this.status = status;
- this.statusTime = statusTime;
- this.lastError = lastError;
- this.url = url;
- this.name = name;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement