设为首页 加入收藏

TOP

Hibernate中关联关系的CRUD(增删改查)(二)
2015-07-24 11:09:58 来源: 作者: 【 】 浏览:5
Tags:Hibernate 关联 关系 CRUD 删改
er table t_user add constraint FK_e5f24mh6aryt9hsy99oydps6g foreign key (group_id) references t_group (id)

Hibernate: insert into t_group (name) values (?)

Hibernate: insert into t_user (group_id, name) values (?, ?)

?

7、实验2(仅保存Group对象的情况下,自动保存User)

(1)修改Group.java

package com.zgy.hibernate.model;

?

import java.util.HashSet;

import java.util.Set;

?

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.JoinColumn;

import javax.persistence.OneToMany;

import javax.persistence.Table;

import javax.persistence.CascadeType;

@Entity

@Table(name="t_group")

public class Group {

private int id;

private String name;

private Set users = new HashSet();

@Id

@GeneratedValue

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;

}

@OneToMany(mappedBy="group",

cascade={CascadeType.ALL}

)

public Set getUsers() {

return users;

}

public void setUsers(Set users) {

this.users = users;

}

?

?

}

(2)去除User.java中加入的cascade={CascadeType.ALL}这段Annotation

package com.zgy.hibernate.model;

?

import javax.persistence.CascadeType;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.JoinColumn;

import javax.persistence.ManyToOne;

import javax.persistence.Table;

?

@Entity

@Table(name="t_user")

public class User {

private int id;

private String name;

private Group group;

@Id

@GeneratedValue

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;

}

@ManyToOne

public Group getGroup() {

return group;

}

public void setGroup(Group group) {

this.group = group;

}

?

}

(3)测试

要建立User和Group两者的双向关系,并且只保存Group对象

package com.zgy.hibernate.model;

?

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.boot.registry.StandardServiceRegistryBuilder;

import org.hibernate.cfg.Configuration;

import org.hibernate.service.ServiceRegistry;

import org.hibernate.tool.hbm2ddl.SchemaExport;

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(){

Configuration configure =new Configuration().configure();

new SchemaExport(configure).create(true, true);

sf = configure.buildSessionFactory();

}

@Test

public void testSaveUser() {

User user1 = new User();

user1.setName("user1");

User user2 = new User();

user2.setName("user2");

Group group = new Group();

group.setName("group1");

group.getUsers().add(user1);

group.getUsers().add(user2);

user1.setGroup(group);

user2.setGroup(group);

Session s = sf.openSession();

s.beginTransaction();

s.save(group);

//s.save(user);

s.getTransaction().commit();

}

?

@AfterClass

public static void afterClass(){

sf.close();

}

?

}

?

(4)观察结果

生成的SQL语句:

?

create table t_group (

id integer not null auto_increment,

name varchar(255),

primary key (id)

)

?

create table t_user (

id integer not null auto_increment,

name varchar(255),

g

首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇【MongoDB数据库】JavaMongoDBCRU.. 下一篇Chapter3ProtectingtheData(2)..

评论

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

·Java 学习线路图是怎 (2025-12-25 15:19:15)
·关于 Java 学习,有 (2025-12-25 15:19:12)
·有没有Java swing教 (2025-12-25 15:19:09)
·Start, Stop, and Di (2025-12-25 14:50:57)
·C语言入门教程:零基 (2025-12-25 14:50:54)