DAO设计:
已经设计好数据实体以及关联关系了,接下来DAO层的编码,这部分没什么东西,可以直接无视
HibernateUtil:
package org.taomujian.db;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
try {
// Create the SessionFactory from hibernate.cfg.xml
return new Configuration().configure().buildSessionFactory();
}
catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
OrgDAO:
package org.taomujian.dao;
import org.hibernate.Session;
import org.taomujian.db.HibernateUtil;
import org.taomujian.model.Org;
public class OrgDAO{
public void saveOrg(Org org){
if(null==org) return ;
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
session.persist(org);
session.getTransaction().commit();
}
public void delOrg(Org org){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
session.delete(org);
session.getTransaction().commit();
}
public void mergeOrg(Org org){
if(null==org) return ;
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
session.merge(org);
session.getTransaction().commit();
}
public Org getOrg(String id){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Org org = (Org)session.get(Org.class, id);
session.getTransaction().commit();
return org;
}
}
RoleDAO:
package org.taomujian.dao;
import org.hibernate.Session;
import org.taomujian.db.HibernateUtil;
import org.taomujian.model.Role;
public class RoleDAO {
/**
* 保存role记录,可以只单独保存role,也可以完整的保存role以及org和级联关系
*
* @param role
*/
public void saveRole(Role role){
if(null==role) return ;
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
session.persist(role);
session.getTransaction().commit();
}
public void mergeRole(Role role){
if(null==role) return ;
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
session.merge(role);
session.getTransaction().commit();
}
/**
* 根据角色的ID获取一条role数据
* @param id
* @return
*/
public Role getRole(String id){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Role role = (Role)session.get(Role.class, id);
System.out.println(role.getOrgList());
session.getTransaction().commit();
return role;
}
/**
* 删除角色:
* @param id
*/
public void removeRole(Role role){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
session.delete(role);
session.getTransaction().commit();
}
}
分享到:
相关推荐
本教程将深入探讨如何使用Hibernate实现多表之间的双向关联,包括单-多、多-单、多-多关系。 **一、单-多关系** 在数据库设计中,单-多关系指的是一个实体可以与多个其他实体相关联。例如,一个学生可以属于多个...
在SSH(Spring、Struts、Hibernate)框架中,Hibernate作为持久层的解决方案,极大地简化了数据库操作的复杂性。SSH框架的组合使得企业级应用开发更加高效和便捷。 "hibernate-release-5.2.10" 是Hibernate的一个...
- Hibernate会自动维护中间表,但需要注意的是,如果直接操作数据库删除了一个实体,那么相关的关联可能不会自动更新。因此,推荐始终通过Hibernate API来管理关联关系,避免直接操作数据库。 5. 中间表的自定义:...
本文将深入探讨如何在Hibernate中实现多对多(ManyToMany)的关系映射,以及相关的重要概念和技术细节。 在数据库设计中,多对多关系是最常见的一种关联类型,例如,一个学生可以选修多门课程,一门课程也可以被多...
在IT行业中,Hibernate是一个非常重要的Java持久化框架,它简化了数据库操作,使得开发者可以更加专注于业务逻辑,而不是底层的数据存取。这篇博客"Hibernate学习一--注解方式自动建表"主要探讨了如何使用...
为了查询多对多关系,可以使用HQL(Hibernate Query Language)或者Criteria API。例如,要获取一个学生的所有课程: ```java String hql = "from Student s where s.id = :studentId"; Query<Student> query = ...
Session则代表了一个数据库连接,是执行数据库操作的接口,它可以用来保存、更新、删除对象,以及执行HQL(Hibernate查询语言)和SQL。 三、持久化对象与实体类 在Hibernate中,Java类被称为实体类,它们代表数据库...
本篇将详细阐述Hibernate中的对象三状态、一对一(OneToOne)、一对多(OneToMany)以及多对多(ManyToMany)关系映射。 一、Hibernate对象三状态 1. 游离态(Detached):对象在应用程序中创建,但尚未与Session...
### Hibernate Annotations 3.5.0-Final:深入解析与应用 #### 一、概述 在对象关系映射(ORM)领域中,Hibernate 是一款非常成熟的框架,它提供了丰富的功能来帮助开发者处理复杂的数据库交互问题。随着 Java ...
《深入理解Hibernate注解》 Hibernate作为Java领域中的一...综上,Hibernate注解为Java开发人员提供了更便捷、更直观的ORM解决方案。通过熟练掌握并合理运用这些注解,开发者可以更好地驾驭数据库操作,提高开发效率。
4. **Criteria查询**:除了传统的HQL(Hibernate Query Language)查询,3.6.6版本还提供了Criteria API,这是一种更加面向对象的查询方式,可以动态构建查询条件,增强了代码的可读性和灵活性。 5. **实体生命周期...
2. **持久化上下文(Persistence Context)**:Hibernate管理的内存区域,其中的实体处于持久状态,其变化会自动同步到数据库。 3. **查询语言(JPQL,Java Persistence Query Language)**:类似于SQL,但面向对象...
【标题】"Hibernate之第2解之-hibernate_demo_1_annotation"主要涵盖了使用Hibernate框架进行对象关系映射(ORM)的实践,特别是基于注解的方式。在这个教程中,我们将深入探讨如何利用Java注解来配置Hibernate实体...
- **Session**:是Hibernate中的工作单元,负责对象的持久化操作,如保存、更新、删除和查询。 - **SessionFactory**:用于创建Session对象,它是线程安全的,应用程序中通常只需要一个SessionFactory实例。 - **...
在Java的持久化框架Hibernate中,Many-to-Many关系是一种常见的数据模型,它表示一个实体可以与多个其他实体之间存在关联,反之亦然。这篇博客文章可能会深入探讨如何在Hibernate中处理这种多对多的关系,并可能涉及...
《Hibernate Annotations 3.4.0.GA:深入理解与应用》 Hibernate是Java领域中广泛应用的对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。而Hibernate ...
【标题】"hibernate-entitymanager-3.4.0.GA" 是一个与Java持久化框架Hibernate Entity Manager相关的库,这个版本号表明它是2009年左右发布的一个稳定版本。Hibernate Entity Manager是JPA(Java Persistence API)...
在Java编程领域,Hibernate是一个非常重要的对象关系映射(ORM)框架,它允许开发者使用Java对象来操作数据库,而无需直接编写SQL语句。在处理多对多关联关系时,Hibernate提供了一种方便的方式来实现这种复杂的...
4. **HQL和 Criteria 查询:** Hibernate支持面向对象的查询语言HQL,以及Criteria API,提供了更灵活的查询方式,不同于传统的SQL。 5. **缓存机制:** Hibernate提供了第一级缓存(Session级别的)和第二级缓存...
Hibernate 是一个广泛使用的Java语言的对象关系映射(ORM)框架,它允许开发者将数据库操作转换为面向对象的方式,简化了Java应用的数据库交互。Hibernate Annotations是Hibernate框架的一部分,提供了注解方式来...