User.java
package com.goby.Hibernate.bean;
public class User {
private int id;
private String name;
private Group group;
public Group getGroup() {
return group;
}
public void setGroup(Group group) {
this.group = group;
}
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;
}
}
Group.java
package com.goby.Hibernate.bean;
public class Group {
private int 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;
}
private String name;
}
Use.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping
package="com.goby.Hibernate.bean">
<class name="User" table="t_user">
<id name="id">
<generator class="native"/>
</id>
<property name="name"></property>
<many-to-one name="group" column="groupid"
class="com.goby.Hibernate.bean.Group" cascade="all" />
</class>
</hibernate-mapping>
Group.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping
package="com.goby.Hibernate.bean">
<class name="Group" table="t_group">
<id name="id">
<generator class="native"/>
</id>
<property name="name"></property>
</class>
</hibernate-mapping>
hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory >
<property name="hibernate.connection.url">jdbc:mysql://localhost/hibernateManytoOne</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">seebig</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<mapping resource="com/goby/Hibernate/bean/User.hbm.xml" />
<mapping resource="com/goby/Hibernate/bean/Group.hbm.xml" />
</session-factory>
</hibernate-configuration>
测试代码:Test.java
package test;
import junit.framework.TestCase;
import org.hibernate.Session;
import com.goby.Hibernate.bean.Group;
import com.goby.Hibernate.bean.HibernateUtils;
import com.goby.Hibernate.bean.User;
public class test extends TestCase {
public void testSave(){
Session session = null;
try{
session = HibernateUtils.getSession();
session.beginTransaction();
Group group = new Group();
group.setName("seebig");
User user = new User();
user.setName("goby");
user.setGroup(group);
session.save(user);
session.getTransaction().commit();
}catch(Exception ex){
ex.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
public void testload(){
Session session = null;
try{
session = HibernateUtils.getSession();
session.beginTransaction();
/*
* 相当于sql
* select * from t_user u left outer join t_group g on u.groupid=g.id where u.id=?
*/
User user = (User)session.get(User.class, 2);
System.out.println("user.name="+user.getName());
System.out.println("group.name="+user.getGroup().getName());
session.getTransaction().commit();
}catch(Exception ex){
ex.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
}
分享到:
相关推荐
- `<one-to-one>`、`<many-to-one>`、`<one-to-many>`和`<many-to-many>`:分别用于一对一、一对多、多对一和多对多的关系映射,通过`<class>`元素的嵌套和属性如`inverse`、`cascade`等来控制关系的维护方式和级联...
### Hibernate笔记 #### 一、概述 Hibernate 是一个开源的对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互过程。通过使用Hibernate,开发者可以将对象模型与关系型数据库模型进行映射,从而避免...
- 在 XML 映射文件中使用 `<one-to-many>` 或 `<many-to-many>` 标签来配置这些关系。 - **查询操作**: - 使用 HQL(Hibernate Query Language)或 Criteria API 来执行复杂查询。 - 支持分页查询、动态查询等...
**Hibernate**支持多种关联关系映射,包括一对一、一对多、多对多等。 1. **一对一(One-to-One)**: - 可以通过`<one-to-one>`标签实现,通常用于表示两个实体之间的一对一关系。 2. **一对多(One-to-Many)**...
M:N(多对多)关联则意味着一个实体可以与多个其他实体相关联,同时其他实体也可以与该实体相关联,如学生和课程之间的关系。在Hibernate中,通常使用`<many-to-many>`标签来建立这种关联,需要一个中间表来保存双方...
本笔记主要探讨如何使用Hibernate进行数据层的操作,包括服务器端的分页查询以及多对一的映射关系。 1. **服务器端分页方法** 在给定的代码中,展示了如何使用Hibernate实现服务器端的分页查询。`findByAllOfTotal...
在多对一关联中,多个实体实例对应一个实例,通过`<many-to-one>`标签在多方定义外键,指向一方。级联操作允许对关联对象执行连锁操作,比如保存或删除。 六、一对一主键关联映射 一对一主键关联是指两个实体共享同...
- `<one-to-one>`、`<one-to-many>`、`<many-to-many>`:表示关联关系的映射。 #### 2.3 id的内置生成器 - **常见生成器**: - `increment`:每次生成一个递增的值。 - `identity`:由数据库自动生成唯一标识符...
此外,我们还提到了多对多关联关系,这通常涉及一个中间表来存储两个实体之间的关联。映射时,可以使用 `<many-to-many>` 标签,通过 `<join-table>` 子标签定义中间表及其关联字段。 对于集合类型的映射,如 Set、...
描述:本篇笔记深入探讨了Hibernate框架中一对多关系的映射及持久化对象状态管理,结合个人理解与实践经验,旨在为读者提供一份详实的学习资料。 ### 一、一对多关系映射详解 在Hibernate框架中,一对多关系是一种...
6. **关联映射**: Hibernate支持一对一(One2One)、一对多(One2Many)、多对一(Many2One)和多对多(Many2Many)的关联映射。关联可以通过外键或复合主键实现,双向关联时需在两端都配置,并且一方需要指定`...
本案例将探讨如何使用Hibernate处理1对N的关系映射,即一个实体对象对应多个实体对象的关系。这里以部门和员工为例,部门可以包含多个员工,而每个员工则属于一个特定的部门。 首先,我们需要创建两个数据库表,一...