设为首页 加入收藏

TOP

Hibernate――ORMapping(一)
2015-07-24 11:34:32 来源: 作者: 【 】 浏览:14
Tags:Hibernate ORMapping

ORMapping

第一种:一对一单向外键关联

一、Annotaion配置

小实验1:

(1)编写hunsband.java,属性为id,name,wife。id是主键

(2)编写wife.java,属性为id,name。id是主键

(3)实现方式:在husband.java中,用wife作为外键关联wife.java中的主键id

Husband.java

package com.zgy.hibernate.model;



import javax.persistence.Entity;

import javax.persistence.Id;

import javax.persistence.JoinColumn;

import javax.persistence.OneToOne;



@Entity

public class Husband {

private int id;

private String name;

private Wife wife;

@Id

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@OneToOne

@JoinColumn(name="wifeId")

public Wife getWife() {

return wife;

}

public void setWife(Wife wife) {

this.wife = wife;

}



}





Wife.java

package com.zgy.hibernate.model;



import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;



@Entity

public class Wife {

private int id;

private String name;

@Id

public int getId() {

return id;

}



public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}





}

Junit测试

package com.zgy.hibernate.model;



import static org.junit.Assert.*;



import java.util.Date;



import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.AnnotationConfiguration;

import org.junit.AfterClass;

import org.junit.BeforeClass;

import org.junit.Test;



public class ORMapppingTest {



public static SessionFactory sf = null;

@BeforeClass

public static void beforeClass(){

sf = new AnnotationConfiguration().configure().buildSessionFactory();

}

@Test

public void test() {

Husband h = new Husband();

Wife w = new Wife();







Session session2 = sf.openSession();

session2.beginTransaction();

w.setId(1);

w.setName("李四");

session2.save(w);

session2.getTransaction().commit();



Session session1 = sf.openSession();

session1.beginTransaction();

h.setId(1);

h.setName("张三");

h.setWife(w);

session1.save(h);

session1.getTransaction().commit();

}



@AfterClass

public static void afterClass(){

sf.close();

}



}

?

观察结果:

1、观察hibernate生成的sql语句:

Hibernate: create table Husband (id integer not null, name varchar(255), wifeId integer, primary key (id))

Hibernate: create table Wife (id integer not null, name varchar(255), primary key (id))

Hibernate: alter table Husband add constraint FK_kruq9jfxa0jrc2od8dbh09mia foreign key (wifeId) references Wife (id)

?

2、如果不加@JoinColumn(name="wifeId"),在husband表将增加了关联wife表主键的外键wife_id。

?

3、使用sql语句:show create table husband;可以看到如下sql语句

CREATE TABLE `husband` (

`id` int(11) NOT NULL,

`name` varchar(255) DEFAULT NULL,

`wife_id` int(11) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `FK_4565w2c4f1cj082spdiok0w6` (`wife_id`),

CONSTRAINT `FK_4565w2c4f1cj082spdiok0w6` FOREIGN KEY (`wife_id`) REFERENCE
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇函数 下一篇jdbc自己理解

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·哈希表 - 菜鸟教程 (2025-12-24 20:18:55)
·MySQL存储引擎InnoDB (2025-12-24 20:18:53)
·索引堆及其优化 - 菜 (2025-12-24 20:18:50)
·Shell 中各种括号的 (2025-12-24 19:50:39)
·Shell 变量 - 菜鸟教 (2025-12-24 19:50:37)