2016-10-18 3 views
1

Я начал разрабатывать свое приложение Java EE с использованием MySQL и JPA для сохранения, поэтому у меня есть сомнение в том, как имплантировать его для проектирования базы данных.Ограничение связей и ссылочной целостности с использованием JPA

Так я определил мои таблицы базы данных, например: сотрудники и отделы с его отношения

Использование JPA Я определил отношения следуя некоторые учебники, но я не могу понять, если внешние ключи и ограничения должны быть определены также для таблиц базы данных или оставил без как:

CREATE TABLE `thejavageek`.`employee` (
    `idemployee` INT   NOT NULL, 
    `firstname` VARCHAR(45) NULL, 
    `lastname` VARCHAR(45) NULL, 
    # ... 
PRIMARY KEY (`idemployee`) 
); 

и JPA сущности:

@Entity 
public class Employee{ 

    @Id 
    @GeneratedValue(strategy= GenerationType.AUTO)  

    private int eid; 
    private String ename; 
    private double salary; 
    private String deg; 

    @ManyToOne 
    private Department department; 

    public Employee(int eid, String ename, double salary, String deg) { 
     super(); 
     this.eid = eid; 
     this.ename = ename; 
     this.salary = salary; 
     this.deg = deg; 
    } 

    public Employee() { 
     super(); 
    } 

    public int getEid() { 
     return eid; 
    } 

    public void setEid(int eid) { 
     this.eid = eid; 
    } 

    public String getEname() { 
     return ename; 
    } 

    public void setEname(String ename) { 
     this.ename = ename; 
    } 

    public double getSalary() { 
     return salary; 
    } 

    public void setSalary(double salary) { 
     this.salary = salary; 
    } 

    public String getDeg() { 
     return deg; 
    } 

    public void setDeg(String deg) { 
     this.deg = deg; 
    } 

    public Department getDepartment() { 
     return department; 
    } 

    public void setDepartment(Department department) { 
     this.department = department; 
    } 
} 

@Entity 
public class Department { 

    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 

    private int id; 
    private String name; 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getName(){ 
     return name; 
    } 

    public void setName(String deptName){ 
     this.name = deptName; 
    } 
} 

lefting отношения и ограничения Managem в JPA?

благодарит заранее!

ответ

0

В вашей системе кода будет создана новая таблица по имени employee_department_mapping (с колонками employee_id, department_id), которая будет содержать отображение каждого сотрудника в его отдел.

Однако, если вы хотите, чтобы справиться с этим в качестве внешнего ключа в таблице сотрудников, отметьте ваш department поле с @JoinColumn и сказать имя столбца внешнего ключа

@ManyToOne 
@JoinColumn(name = "department_id") 
private Department department; 

И установить hibernate.hbm2ddl.auto в update

Теперь, если вы перезапустите приложение, оно автоматически сгенерирует столбец внешнего ключа по имени department_id в таблице employee.

+0

спасибо за ответ @ naresh-joshi, так что мне не нужно определять какой-либо внешний ключ в MySQL, только создать таблицу с или без определения первичного ключа? – antonio

+0

и делегировать ORM все создание и управление? можете ли вы отправить пример или ссылку, пожалуйста? – antonio

+0

Вам даже не нужно создавать свои таблицы, просто создать пустую схему, а спящий режим будет делать все, вы можете следовать этой серии видеороликов, чтобы понять ее. Https://www.youtube.com/playlist?list=PL4AFF701184976B25 –

Смежные вопросы