`
qhd_liwei
  • 浏览: 104500 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate复合主键的映射 并执行增删改查

    博客分类:
  • java
阅读更多
本人的映射文件都是eclipse自动生成,包括Users.java 和 UserPK.java。 这边就不贴出来了

假如USERS表的主键为NAME字段,TEL字段和AGE字段,那么在User类中也应该存在相对应的属性和方法,映射方法如下:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<hibernate-mapping package="classweb.model.po">
<class
  name="Users"
  table="USERS"
>
  <meta attribute="sync-DAO">false</meta>
  <composite-id name="id" class="UsersPK">
   <key-property
    name="name"
    column="NAME"
    type="string"
   />
   <key-property
    name="tel"
    column="TEL"
    type="string"
   />
  </composite-id>

  <property
   name="age"
   column="AGE"
   type="string"
   not-null="false"
  />
 
</class>
</hibernate-mapping>

以下代码生成一个Users对象,并保存.

    Session s = HibernateUtil.currentSession();
    Transaction t = s.beginTransaction();
    UsersPK usersPK = new UsersPK();
    usersPK.setName(1);
    usersPK.setTel(4);
    Users user = new Users();
    user.setAge("19");
    user.setId(usersPK );
    s.save(user);
    t.commit();
    HibernateUtil.closeSession();
    System.out.println("insert success!");

更新.

    Session s = HibernateUtil.currentSession();
    Transaction t = s.beginTransaction();
    UsersPK usersPK = new UsersPK();
    usersPK.setDbid(1);
    usersPK.setRowUID(4);
    Users user = (Users)s.load(Users.class, usersPK);

    user.setAge("20");
    s.update(user);
    t.commit();
    HibernateUtil.closeSession();
    System.out.println("update success!");

删除.

Session s = HibernateUtil.currentSession();
    Transaction t = s.beginTransaction();
    UsersPK usersPK = new UsersPK();
    usersPK.setDbid(1);
    usersPK.setRowUID(4);
    Users user = (Users)s.load(Users.class, usersPK);

    s.delete(user);
    t.commit();
    HibernateUtil.closeSession();
    System.out.println("delete success!");

最后讲select

如果对复合主键中的一个主键进行查询,必须

    Session s = HibernateUtil.currentSession();
    Criteria c = s.createCriteria(Users.class);
    c.add(Restrictions.eq("id.name", "levi"));
    List list = c.list();
    Iterator iter = list.iterator();
    while (iter.hasNext()) {
      Users item = (Users) iter.next();
      System.out.println("name:" + item.getId().getName());
      System.out.println("tel;" + item.getId().getTel());
      System.out.println("age:" + item.getAge());
    }
    HibernateUtil.closeSession();
    System.out.println("select success!");

这样的查询都出来了,其它的查询自己考虑吧
转载自:http://levi.bloghome.cn/posts/39504.html
分享到:
评论

相关推荐

    Hibernate复合主键.

    在进行增删改查操作时,由于复合主键的存在,我们需要确保所有关联的主键值都被正确设置。例如,在保存`Enrollment`实体时,必须先设置`studentId`和`courseId`,然后才能调用`session.save()`或`session.merge()`。...

    Hibernate入门(代码+笔记)

    Hibernate是一款强大的Java持久化框架,它简化了数据库与Java对象之间的交互,使得开发者无需编写大量的SQL语句,就能实现数据的增删改查。本教程将分为五个部分,逐步深入Hibernate的世界。 **第一部分:Hibernate...

    Hibernate3.1_学习源码

    03 03Hibernate_Component : 实体细粒度的划分,数据库中的一张表在程序中划分为几个部分的实体,配置文件和增、删、改、查的使用。 04 04Hibernate_Composite : 复合主键的使用,在开发中很少用到,一般良好的设计...

    Hibernate实战(第2版).pdf

    4. **CRUD操作**:展示如何使用Hibernate进行增删改查(Create, Read, Update, Delete)操作,包括HQL(Hibernate查询语言)和 Criteria 查询的使用。 5. **集合映射**:讨论如何处理一对多、多对一、多对多等复杂...

    Hibernate 进阶教程

    5. **CRUD操作**:详细阐述增删改查(Create, Read, Update, Delete)的基本方法,如save()、get()、update()、delete(),以及Query和Criteria API的使用。 6. **关联映射**:详解一对一、一对多、多对一、多对多等...

    Hibernate项目开发宝典源码(完整版)

    - 数据库的增删改查操作,以及复杂的关联查询和聚合函数使用。 通过研究这些源码,开发者不仅可以掌握Hibernate的基本用法,还能了解到在实际项目中如何有效地利用Hibernate来解决各种问题,提升开发效率。

    Hibernate v3.2中文参考手册

    手册会详细介绍如何编写HQL查询语句,使用HQL进行数据的增删改查操作,以及如何使用HQL的高级特性,如投影查询、分组、排序等。 3. 常用版本:在手册中,会涉及Hibernate v3.2这个版本中的新特性和改进,以及与之前...

    ssh多主键插入

    DAO层直接与数据库交互,实现数据的增删改查。对于多主键的插入,关键是确保在插入前所有主键字段已经被正确赋值。由于示例代码中DAO层的具体实现被省略,我们无法给出详细的代码示例,但可以推测DAO层的实现会利用...

    hibernate技术手册

    5. **会话和事务**:介绍如何打开和关闭会话,以及如何在会话中进行增删改查操作。同时,会涉及到事务的隔离级别和回滚规则。 6. **查询**:详细讲解HQL和Criteria API的用法,包括基本查询、条件查询、分页查询、...

    hibernate详细笔记.

    Session提供了`save()`, `delete()`, `load()`, `update()`, `saveOrUpdate()`, `clear()`和`flush()`等方法,用于对象的增删改查。`load()`和`get()`的区别在于前者用于根据ID加载对象,如果不存在则抛出异常,后者...

    hibernate经典源码

    3. **Session与Transaction管理**:Hibernate中的Session接口负责对象的持久化操作,它提供了增删改查(CRUD)的方法。Transaction则管理数据库事务,确保数据的一致性。理解Session的生命周期和事务的提交与回滚...

    Hibernate开发指南.pdf

    4. **Session接口**:介绍Session在Hibernate中的作用,它是数据库会话的代表,讲解如何打开、关闭Session,以及Session中的增删改查(CRUD)操作。 5. **Transaction管理**:讨论Hibernate的事务处理,包括显式和...

    林信良 hibernate

    ORM允许开发者将数据库中的表映射为Java对象,通过对象的操作来完成数据的增删改查,降低了对SQL语言的依赖。林信良在教程中详细讲解了Hibernate如何实现这一过程,包括实体类的创建、持久化元数据的定义(如XML配置...

    hibernate doc 中文版

    - 使用SessionFactory和Session接口来打开和关闭数据库连接,执行数据的增删改查操作。 - **第二部分:关联映射** - **映射Person类:** - 实现一对多、多对多等关联关系的映射。 - **单向Set-based的关联:** ...

    hibernate 入门经典实例

    - **业务逻辑层**:负责处理具体的业务逻辑,如对学生对象的增删改查等操作。 - **数据持久层**:负责屏蔽数据库的具体操作细节,向业务逻辑层提供API接口。该层使得业务逻辑层能够以面向对象的方式操作数据,而无需...

    spring jpa

    它提供了一种声明式的方式来处理数据库交互,使得开发人员无需编写大量的SQL代码,就能实现数据的增删改查。Spring JPA通过Repository接口抽象了数据访问层,使得业务逻辑代码更加专注于业务本身,而不是数据库操作...

Global site tag (gtag.js) - Google Analytics