2016-10-18 24 views
1

永続性のためにMySQLとJPAを使用してJava EEアプリケーションを設計し始めたので、データベース設計のインパクトを疑うことがあります。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へのent?

ありがとうございます!

答えて

0

あなたのコードシステムでは、employee_department_mappingemployee_id,department_idのカラムを持つ)という名前で新しいテーブルを作成します。このテーブルには、すべての従業員の部門へのマッピングが含まれます。

あなたは、従業員表の外部キーとしてそれを処理したい場合は、@JoinColumnであなたのdepartmentフィールドをマークし、外部キー列

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

の名前を告げるとupdate

hibernate.hbm2ddl.autoを設定これで、アプリケーションを再起動すると、従業員表のdepartment_idという名前で外部キー列が自動的に生成されます。

+0

reply @ naresh-joshiありがとうので、MySQLで外部キーを定義する必要はありません。テーブルを作成するか、プライマリキーを定義するだけですか? – antonio

+0

ORMにすべての作成と管理を委任しますか?あなたは例やリンクを投稿できますか? – antonio

+0

テーブルを作成する必要はありません。空のスキーマを作成して休止状態にするだけで、すべてのことができます。このビデオチュートリアルのシリーズに従ってください。https://www.youtube.com/playlist?list=PL4AFF701184976B25 –

関連する問題