Hibernate关联使用.docx
- 文档编号:23462982
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:33
- 大小:639.15KB
Hibernate关联使用.docx
《Hibernate关联使用.docx》由会员分享,可在线阅读,更多相关《Hibernate关联使用.docx(33页珍藏版)》请在冰豆网上搜索。
Hibernate关联使用
目录
Hibernate多对多双向关联(xml配置)1
Hibernate多对多双向关联(Annotation配置)5
Hibernate多对一双向关联(xml配置)9
Hibernate多对一双向关联(Annotation配置)13
Hibernate一对一外键双向关联(xml配置篇)17
Hibernate一对一外键双向关联(Annotation配置篇)20
Hibernate一对一主键双向关联映射(xml配置)24
Hibernate一对一主键双向关联映射(Annotation配置)26
Hibernate多对多双向关联(xml配置)
Role.java
packagecom.many2many.bean;
importjava.util.Set;
publicclassRole{
privateintid;
privateStringname;
privateSet
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicSet
returnusers;
}
publicvoidsetUsers(Set
this.users=users;
}
}
User.java
packagecom.many2many.bean;
importjava.util.Set;
publicclassUser{
privateintid;
privateStringname;
privateSet
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicSet
returnroles;
}
publicvoidsetRoles(Set
this.roles=roles;
}
}
映射文件
Role.hbm.xml
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD3.0//EN"
"
User.hbm.xml
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD3.0//EN"
"
导出的sql
createtableHibernate_Many2Many.roles(
idintegernotnullauto_increment,
namevarchar(255),
primarykey(id)
)
createtableHibernate_Many2Many.users(
idintegernotnullauto_increment,
namevarchar(255),
primarykey(id)
)
createtableuser_role(
role_idintegernotnull,
user_idintegernotnull,
primarykey(user_id,role_id)
)
altertableuser_role
addindexFK143BF46ADA6B394F(role_id),
addconstraintFK143BF46ADA6B394F
foreignkey(role_id)
referencesHibernate_Many2Many.roles(id)
altertableuser_role
addindexFK143BF46A7F95FD2F(user_id),
addconstraintFK143BF46A7F95FD2F
foreignkey(user_id)
referencesHibernate_Many2Many.users(id)
测试代码
@Test
publicvoidinsert(){
Sessionsession=HibernateSessionFactory.getSession();
Transactiontransaction=session.beginTransaction();
try{
transaction.begin();
Useruser=newUser();
user.setName("张三");
Rolerole=newRole();
role.setName("管理员");
Set
roles.add(role);
user.setRoles(roles);
session.persist(user);
mit();
}catch(HibernateExceptione){
e.printStackTrace();
transaction.rollback();
}
}
@Test
publicvoidselect(){
Sessionsession=HibernateSessionFactory.getSession();
Useruser=(User)session.get(User.class,1);
System.out.println(user.getName());
Set
for(Iterator
Rolerole=(Role)iterator.next();
System.out.println(role.getName());
}
}
Hibernate多对多双向关联(Annotation配置)
Role.java
packagecom.many2many.bean;
importjava.util.Set;
importjavax.persistence.CascadeType;
importjavax.persistence.Column;
importjavax.persistence.Entity;
importjavax.persistence.GeneratedValue;
importjavax.persistence.GenerationType;
importjavax.persistence.Id;
importjavax.persistence.ManyToMany;
importjavax.persistence.Table;
@Entity
@Table(name="roles",catalog="Hibernate_Many2Many")
publicclassRole{
privateintid;
privateStringname;
privateSet
@Id
@Column(name="id")
@GeneratedValue(strategy=GenerationType.AUTO)
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
@Column(name="name")
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
@ManyToMany(mappedBy="roles",cascade=CascadeType.ALL)
publicSet
returnusers;
}
publicvoidsetUsers(Set
this.users=users;
}
}
User.java
packagecom.many2many.bean;
importjava.util.Set;
importjavax.persistence.CascadeType;
importjavax.persistence.Column;
importjavax.persistence.Entity;
importjavax.persistence.GeneratedValue;
importjavax.persistence.GenerationType;
importjavax.persistence.Id;
importjavax.persistence.JoinColumn;
importjavax.persistence.JoinTable;
importjavax.persistence.ManyToMany;
importjavax.persistence.Table;
@Entity
@Table(name="users",catalog="Hibernate_Many2Many")
publicclassUser{
privateintid;
privateStringname;
privateSet
@Id
@Column(name="id")
@GeneratedValue(strategy=GenerationType.AUTO)
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
@Column(name="name")
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(
name="user_role",
joinColumns=@JoinColumn(name="user_id"),
inverseJoinColumns=@JoinColumn(name="role_id")
)
publicSet
returnroles;
}
publicvoidsetRoles(Set
this.roles=roles;
}
}
导出的sql
createtableHibernate_Many2Many.roles(
idintegernotnullauto_increment,
namevarchar(255),
primarykey(id)
)
createtableHibernate_Many2Many.users(
idintegernotnullauto_increment,
namevarchar(255),
primarykey(id)
)
createtableuser_role(
user_idintegernotnull,
role_idintegernotnull,
primarykey(user_id,role_id)
)
altertableuser_role
addindexFK143BF46ADA6B394F(role_id),
addconstraintFK143BF46ADA6B394F
foreignkey(role_id)
referencesHibernate_Many2Many.roles(id)
altertableuser_role
addindexFK143BF46A7F95FD2F(user_id),
addconstraintFK143BF46A7F95FD2F
foreignkey(user_id)
referencesHibernate_Many2Many.users(id)
测试代码
@Test
publicvoidinsert(){
Sessionsession=HibernateSessionFactory.getSession();
Transactiontransaction=session.beginTransaction();
try{
transaction.begin();
Useruser=newUser();
user.setName("张三");
Rolerole=newRole();
role.setName("管理员");
Set
roles.add(role);
user.setRoles(roles);
session.persist(user);
mit();
}catch(HibernateExceptione){
e.printStackTrace();
transaction.rollback();
}
}
@Test
publicvoidselect(){
Sessionsession=HibernateSessionFactory.getSession();
Useruser=(User)session.get(User.class,1);
System.out.println(user.getName());
Set
for(Iterator
Rolerole=(Role)iterator.next();
System.out.println(role.getName());
}
}
Hibernate多对一双向关联(xml配置)
Department.java
packagecom.many2one.bean;
importjava.util.Set;
publicclassDepartment{
privateintid;
privateStringname;
privateSet
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicSet
returnsets;
}
publicvoidsetSets(Set
this.sets=sets;
}
}
Employee.java
packagecom.many2one.bean;
publicclassEmployee{
privateintid;
privateStringname;
privateDepartmentdepartment;
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicDepartmentgetDepartment(){
returndepartment;
}
publicvoidsetDepartment(Departmentdepartment){
this.department=department;
}
}
映射文件
Department.hbm.xml
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD3.0//EN"
"
Employee.hbm.xml
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD3.0//EN"
"
导出的sql
createtableHibernate_Many2One.department(
idintegernotnullauto_increment,
namevarchar(255),
primarykey(id)
)
createtableHibernate_Many2One.employee(
idintegernotnullauto_increment,
namevarchar(255),
deptidinteger,
primarykey(id)
)
altertableHibernate_Many2One.employee
addindex
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hibernate 关联 使用