本人的映射文件都是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
分享到:
相关推荐
在进行增删改查操作时,由于复合主键的存在,我们需要确保所有关联的主键值都被正确设置。例如,在保存`Enrollment`实体时,必须先设置`studentId`和`courseId`,然后才能调用`session.save()`或`session.merge()`。...
Hibernate是一款强大的Java持久化框架,它简化了数据库与Java对象之间的交互,使得开发者无需编写大量的SQL语句,就能实现数据的增删改查。本教程将分为五个部分,逐步深入Hibernate的世界。 **第一部分:Hibernate...
03 03Hibernate_Component : 实体细粒度的划分,数据库中的一张表在程序中划分为几个部分的实体,配置文件和增、删、改、查的使用。 04 04Hibernate_Composite : 复合主键的使用,在开发中很少用到,一般良好的设计...
4. **CRUD操作**:展示如何使用Hibernate进行增删改查(Create, Read, Update, Delete)操作,包括HQL(Hibernate查询语言)和 Criteria 查询的使用。 5. **集合映射**:讨论如何处理一对多、多对一、多对多等复杂...
5. **CRUD操作**:详细阐述增删改查(Create, Read, Update, Delete)的基本方法,如save()、get()、update()、delete(),以及Query和Criteria API的使用。 6. **关联映射**:详解一对一、一对多、多对一、多对多等...
- 数据库的增删改查操作,以及复杂的关联查询和聚合函数使用。 通过研究这些源码,开发者不仅可以掌握Hibernate的基本用法,还能了解到在实际项目中如何有效地利用Hibernate来解决各种问题,提升开发效率。
手册会详细介绍如何编写HQL查询语句,使用HQL进行数据的增删改查操作,以及如何使用HQL的高级特性,如投影查询、分组、排序等。 3. 常用版本:在手册中,会涉及Hibernate v3.2这个版本中的新特性和改进,以及与之前...
DAO层直接与数据库交互,实现数据的增删改查。对于多主键的插入,关键是确保在插入前所有主键字段已经被正确赋值。由于示例代码中DAO层的具体实现被省略,我们无法给出详细的代码示例,但可以推测DAO层的实现会利用...
5. **会话和事务**:介绍如何打开和关闭会话,以及如何在会话中进行增删改查操作。同时,会涉及到事务的隔离级别和回滚规则。 6. **查询**:详细讲解HQL和Criteria API的用法,包括基本查询、条件查询、分页查询、...
Session提供了`save()`, `delete()`, `load()`, `update()`, `saveOrUpdate()`, `clear()`和`flush()`等方法,用于对象的增删改查。`load()`和`get()`的区别在于前者用于根据ID加载对象,如果不存在则抛出异常,后者...
3. **Session与Transaction管理**:Hibernate中的Session接口负责对象的持久化操作,它提供了增删改查(CRUD)的方法。Transaction则管理数据库事务,确保数据的一致性。理解Session的生命周期和事务的提交与回滚...
4. **Session接口**:介绍Session在Hibernate中的作用,它是数据库会话的代表,讲解如何打开、关闭Session,以及Session中的增删改查(CRUD)操作。 5. **Transaction管理**:讨论Hibernate的事务处理,包括显式和...
ORM允许开发者将数据库中的表映射为Java对象,通过对象的操作来完成数据的增删改查,降低了对SQL语言的依赖。林信良在教程中详细讲解了Hibernate如何实现这一过程,包括实体类的创建、持久化元数据的定义(如XML配置...
- 使用SessionFactory和Session接口来打开和关闭数据库连接,执行数据的增删改查操作。 - **第二部分:关联映射** - **映射Person类:** - 实现一对多、多对多等关联关系的映射。 - **单向Set-based的关联:** ...
- **业务逻辑层**:负责处理具体的业务逻辑,如对学生对象的增删改查等操作。 - **数据持久层**:负责屏蔽数据库的具体操作细节,向业务逻辑层提供API接口。该层使得业务逻辑层能够以面向对象的方式操作数据,而无需...
它提供了一种声明式的方式来处理数据库交互,使得开发人员无需编写大量的SQL代码,就能实现数据的增删改查。Spring JPA通过Repository接口抽象了数据访问层,使得业务逻辑代码更加专注于业务本身,而不是数据库操作...