Отображение EXCEL Sheet в базу данных с использованием JPA Hibernate

0

Я хотел бы сопоставить простую таблицу excel с моим javaEE-приложением, используя спящий режим. Я действительно новичок в Базах данных и ORM, поэтому мне хотелось бы знать, имеют ли смысл следующие отношения и как много Entities имеют смысл разделить таблицу.

Это атрибуты, содержащиеся в электронной таблице Excel:

(Office Room Number|ComputerName|ComputerIP|Computer OS|UserFirstName|UserLastName)

Связи:

  • OfficeRoomNumber -- 1: N -- Users
    • N пользователей, работающих в 1 офисе?
  • OfficeRoomNumber -- 1: N -- Computer
    • N Компьютеры находятся в 1 офисе?
  • User -- 1:1 -- Computer
    • 1 Пользователь получил 1 компьютер?

Спасибо за любую помощь и извините за мой ужасный английский.

  • 1
    Не могли бы вы привести пример ввода и вывода?
  • 0
    я хочу создать простое приложение CRUD с этой таблицей, нормальная строка будет выглядеть следующим образом (12 | Computer-1012 | 10.0.10.51 | Win 10 | Peter | Miller) спасибо за вашу помощь
Показать ещё 4 комментария
Теги:
database
hibernate
jpa

1 ответ

2
Лучший ответ

Вот мои 50c для моделирования вашего домена. Во-первых, можно использовать абстрактный базовый класс для общих аспектов, таких как генерация первичных ключей:

@MappedSuperClass
public abstract class AbstractEntity {

    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "pk-sequence")
    @SequenceGenerator(name = "pk-sequence", sequenceName = "ID_GEN", allocationSize = 1)
    protected Long objectID = -1;

    @Version
    private int version;

    public int getVersion() {
        return version;
    }

    public long getObjectID() {
        return objectID;
    }   
}

Обратите внимание, что это можно улучшить, включив другие общие аспекты, например, дату создания/изменения/временные метки.

Затем мы вводим три класса домена/сущности следующим образом:

@Entity
public class OfficeRoom extends AbstractEntity {

    private String name;
    private String roomNumer;

    @ManyToMany // Maybe an employee is associated with 2 or more office places she/he might work at?
    private Collection<Employee> staff;

    @OneToMany(mappedBy="location")
    private Collection<Computer> equipment;

    // getters and setters
}

Я добавил комментарий, как вы можете видеть выше на полевых сотрудников. Потенциально, хотелось бы связать два разных офисных помещения с некоторыми VIP-сотрудниками, поэтому вы должны рассмотреть этот случай при моделировании своего домена, используя здесь @ManyToMany.

Перемещение по:

@Entity
public class Computer extends AbstractEntity {
    private String name;
    private String model;
    private String vendor;
    private String installedOS;
    private String ipAddress;

    @ManyToOne
    private OfficeRoom location;

    @OneToMany(mappedBy="machine") // Maybe a computer is associated with 2 or more employees?
    private Collection<Employee> user;

    // getters and setters
}

Снова внимательно рассмотрим мой комментарий. В заключение,...

@Entity
public class Employee extends AbstractEntity {
    private String firstName;
    private String lastName;
    // other staff related attributes here ...

    @ManyToOne
    private Computer machine;

    // getters and setters
}

Хорошо заметьте: используйте только аннотации, исходящие из пакета javax.persistence, в ваших операторах импорта, чтобы они были совместимы с спецификацией JPA 2.x и оставались нейтральными с JPA-провайдером с вашим приложением.

Надеюсь это поможет.

  • 1
    Спасибо вам большое! Вы действительно помогли мне здесь! я знаю, что делать сейчас :)
  • 0
    @Tabax Если ответ помог вам, и вы извлекли урок из него в долгосрочной перспективе, рассмотрите возможность предоставления повышенного голоса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню