package com.supan.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.supan.bean.News;
import junit.framework.TestCase;
public class HibernateCrudTest extends TestCase {
public void testInsert(){
Configuration config = new Configuration().configure(); //获取配置对象,注意.configure()会自动读取hibernate.cfg.xml文件
SessionFactory sf = config.buildSessionFactory();//创建回话工厂sessionFactory是整个数据库映射关系经过编译后的内存影像,是线程安全的。
Session sess = sf.openSession();
Transaction tx = (Transaction) sess.beginTransaction();
News mynew = new News();
mynew.setTitle("hibernate的神奇");
mynew.setContent("hibernate非常的神奇");
sess.save(mynew); //save返回持久化对象的主键值,persist返回null
tx.commit(); //提交事物
sess.close(); //关闭回话
sf.close(); //关闭工程
System.out.println("插入成功");
/*
* 注意因为该实体在映射文件中已经指定了标示符生成规则,在保存之前会自动的生成一个id分配给对象,并持久化到数据库中
* 如果标示符是assigned或者是符合主键,那么在save之前需要手动分配数值。
* save persist方法功能几乎完全一样:之所以提供两个方法,是因为:
* 1,照顾习惯了jpa的用法
* 2,save返回主键值,persist返回null
* 3,save因为需要返回主键值,所以会立即生成insert语句
* persist则保证当它在一个事务外部被调用时,并不立即转换成insert这个是
* 非常有用的,尤其当我们封装一个长回话流程的时候。
*/
}
public void testLoad(){
Configuration cfg = new Configuration().configure();
SessionFactory sess = cfg.buildSessionFactory();
Session session = sess.openSession();
Transaction ts = session.beginTransaction();
News mynews = (News)session.load(News.class, new Integer(10)); //持久化状态
mynews.setTitle("陈超阳1");
mynews.setContent("河南平顶山人2");
// session.save(mynews); //多此一举,在session管理下的的对象,一旦修改了他的属性,在session的flush前会自动update到数据库中的
System.out.println(mynews.getTitle());
System.out.println(mynews.getContent());
session.flush();
ts.commit();
session.close();
sess.close();
/*get与load方法的区别:
* load方法和get方法主要区别在于是否延迟加载
* load方法具有延迟加载功能,当使用load方法时,不会立即访问数据库。当时图加载的对象不存在时
* load方法会返回一个代理,get方法会立即访问数据库,视图访问的对象不存在时返回null
*
* hibernate的处理流程:
* 从表面上看,上述程序有一个极大的性能缺陷,当我们需要修改一个持久化对象时需要
* 发送两条sql语句,一条用于查询指定记录的select语句,另一个用于修改该记录的update语句,但是
* 实际应用中无须考虑这种性能的缺陷:对于一个javaee应用而言:hibernate的处理流程通常是这样的:
* 从数据库里加载记录->将信息发送到表现层供用户修改,->
* 将所做修改重新保存到数据库里,这种流程下应用本省就需要发送两条sql语句
*/
}
//update没有作用????
public void testUpdate(){
Configuration cfg = new Configuration().configure();
SessionFactory sessionFactory = cfg.buildSessionFactory();
Session session1 = sessionFactory.openSession();
News news = (News)session1.get(News.class, new Integer(10));
session1.close();
news.setTitle("yangui");
news.setContent("tangjunshan");
Session session2 = sessionFactory.openSession();
session2.update(news);
session2.flush();
session2.close();
}
}
分享到:
相关推荐
### Hibernate基本知识点详解 #### Hibernate简介 Hibernate是一个开源的对象关系映射(ORM)框架,它为Java应用程序提供了简化的方式去处理数据库操作。通过提供一种面向对象的方法来与关系型数据库进行交互,...
在“hibernate基本jar包(数据库是Oracle)”中,我们可以推断出这是针对使用Oracle数据库的Hibernate项目所需的基础库集合。这个压缩包很可能是包含了一系列用于搭建Hibernate环境并连接Oracle数据库的JAR文件。以下...
### Hibernate知识点总结 #### 一、Hibernate概述 Hibernate是一个开源的ORM(Object Relational Mapping,对象关系映射)框架,用于Java应用与关系型数据库之间的交互。它通过使用描述对象和数据库之间映射的元...
Hibernate 知识点涵盖了许多方面,从基本的 ORM 理念到具体的开发流程、对象限制、工具类使用,再到核心接口的理解。学习 Hibernate,不仅需要理解其工作原理,还要熟练掌握如何配置和使用,以实现高效的数据访问和...
StrutsSpringHibernate是Java开发中的三个重要框架,它们在构建企业级Web应用中扮演着核心角色。Struts是一个基于MVC设计模式的框架,Spring是一个全面的后端框架,包括依赖注入、AOP、数据库事务管理等,而...
### Hibernate基本API Hibernate是一种流行的Java持久化框架,它为Java应用程序提供了强大的数据持久化能力,特别是对于那些需要频繁与数据库交互的大型企业级应用。Hibernate通过其基本API,使得开发者能够以面向...
1. **基本概念** - **Hibernate**:是一个ORM(Object-Relational Mapping)框架,用于将Java对象与数据库表进行映射,简化数据库操作。 - **JPA(Java Persistence API)**:是Java标准的持久化API,提供了一套...
这个“hibernate基本jar包”包含了运行Hibernate应用程序所需的核心库,是学习和开发SSH(Struts、Spring、Hibernate)框架的基础。 SSH框架是Java Web开发中的一个经典组合,其中Hibernate负责数据持久化。以下是...
文档阐述了hibernate基本架构的使用,可以作为hibernate学习的基础知识
Hibernate是一个开源的对象关系映射(ORM)框架,它封装了JDBC(Java Database ...该讲义涵盖了Hibernate的基本技术、配置方法以及如何开发一个Hibernate程序等重要知识点,为学习者提供了一个实践ORM框架的良好起点。
### Hibernate基本功能详解 #### 一、概述 Hibernate是一个开源的对象关系映射(ORM)框架,它能够将Java对象映射到数据库表中,并管理这些对象的生命周期。本篇文章主要介绍利用Hibernate框架来实现基本的功能...
**Hibernate 框架知识点详解** Hibernate 是一个强大的开源对象关系映射(ORM)框架,它简化了 Java 应用程序对数据库的操作。通过提供一套API和元数据,Hibernate 可以将Java类与数据库表进行映射,使得开发者可以...
### Hibernate实战知识点解析 #### 一、书籍简介与评价概览 《Hibernate实战》是一部...通过本书的学习,不仅可以快速掌握Hibernate的基本用法,还能深入了解其背后的原理和最佳实践,从而更好地应用于实际项目中。
1. **Hibernate Developer Guide.pdf**:这可能是官方的Hibernate开发者指南,涵盖了从安装配置到高级特性的详细教程,是深入理解Hibernate的好资源。 2. **HIBERNATE - Relational Persistence for Idiomatic Java...
1. **Hibernate3简介**:Hibernate3是Hibernate项目的第三个主要版本,它提供了一种对象关系映射(ORM)解决方案,允许开发人员使用面向对象的编程模型来处理关系数据库。它的目标是减少数据库访问的复杂性,提高...
Hibernate基本概念** - **对象关系映射(ORM)**: ORM是将数据库中的表映射为Java类,使得开发者可以使用面向对象的方式来操作数据库。 - **Session**: Hibernate的核心接口,用于与数据库交互,提供了保存、更新、...
Hibernate的知识点非常广泛,下面从给定文件的标题、描述、标签和部分内容中提炼出一些关键知识点进行总结。 ### Hibernate与数据库数据类型对照 Hibernate需要将Java的数据类型映射到数据库的相应类型。这部分...
在描述中提到的“核心jar,亲测可用,跑demo是够用了”,这表明这些jar文件包含了运行Hibernate与MySQL交互所需的基本组件,并且已经有人验证过它们在演示或测试环境中可以正常工作。通常,这包括Hibernate的核心库...
1. **Configuration** 类是Hibernate框架的核心配置类,负责读取配置文件并初始化配置信息。构造方法会默认读取 `hibernate.properties` 文件,如果需要使用其他的配置文件,可以通过 `configure(String ...
7. **类型转换和用户类型**:Hibernate支持基本数据类型的自动转换,同时也允许自定义复杂类型的映射。 8. **关联映射**:Hibernate支持一对一、一对多、多对一、多对多等各种关联关系的映射,方便地处理复杂的...