Hibernate的作用:
ORP: Object—Relation Mapping 对象关系映射,将对象与数据库映射起来实现持久化。
使用:
1. 需要先写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="show_sql">true</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/center
</property>
<property name="connection.username">root</property>
<property name="connection.password">1111111</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="current_session_context_class">
Thread
</property>
<property name="format_sql">true</property>
<mapping resource="myhibernate/domain/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
2. 然后再写映射文件,映射文件要写在对应的实体类的包里面,User.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>
<class name="myhibernate.domain.User" table="user" catalog="center">
<id name="id" type="java.lang.Integer" column="id">
<generator class="identity"></generator>
</id>
<property name="name" type="java.lang.String" column="name"/>
<property name="score" type="java.lang.Integer" column="score"/>
</class>
</hibernate-mapping>
3然后就可以进行操作
Configuration config = new Configuration();
config.configure();
SessionFactory factory = config.buildSessionFactory();
Session session = factory.openSession()/getCurrentSession();
Transaction tx = session.beginTransaction();
User u = new User();
u.setName(“xx”);
u.setScore(100);
session.save(u);
tx.commit();
if(session.isOpen()){
session.close();
}
增删改查(增加,删除,修改都需要创建事物,在执行完毕后关闭事物,查询不需要创建事物)
查询:先创建session对象,查询时不需要开启事物Transaction,然后根据id进行查询
查询完毕后要关闭session
User u = (User)session.get(User.class,1);
//或者用这种方法查询,延迟加载,提高性能
//User u = (User)session.load(User.class,1);
增加:
Transaction tx = session.beginTransaction();
User u = new User();
u.setName(“xx”);
u.setScore(100);
session.save(u);
tx.commit();
if(session.isOpen()){
session.close();
}
修改:修改时只需要先查出对象,然后给对象赋新值,然后提交事务就能够修改了对象。
Transaction tx = session.beginTransaction();
//加载实体对象
User user = (User)session.load(User.class, 3);
//修改实体对象,修改后当提交事务时会自动修改
user.setName("王五");
user.setScore(40);
tx.commit();
删除:删除有2中方式,可以先查出这个对象然后调用session.delete(user)删除这个对象,也可以创建一个对象然后给它的id赋值,然后调用session.delete(user)系统会根据id来删除对应数据,其中后者是只能用在实体的删除,即只能删除自己这一条记录时,如果级联删除时,是不能用的:删除dept,同时删除对应的emp,就不能用这个了,只能用第一种删除
Hibernate中 Session的 get和load方法的区别:
1、 当数据库不存在对应ID数据时,调用load()方法将会抛出ObjectNotFoundException异常,get()方法将返回null。
2、 load方法可返回实体的代理类实例,而get方法直接返回实体类(此处有异议)。
3、 load方法可以充分利用内部缓存和二级缓存中的现有数据,而get方法则仅仅在内部缓存中进行数据查找,如没有发现对应数据,将越过二级缓存,直接调用SQL完成数据读取
4、 当对象.hbm.xml配置文件<class>元素的lazy属性设置为true时,调用load()方法时则返回持久对象的代理类实例,此时的代理类实例是由运行时动态生成的类,该代理类实例包括原目标对象的所有属性和方法,该代理类实例的属性除了ID不为null外,所在属性为null值,查看日志并没有Hibernate SQL输出,说明没有执行查询操作,当代理类实例通过getXXX()方法获取属性值时,Hiberante才真正执行数据库查询操作。当对象.hbm.xml配置文件<class>元素的lazy属性设置为false时,调用load()方法则是立即执行数据库并直接返回实体类,并不返回代理类。而调用get()方法时不管lazy为何值,都直接返回实体类。
5、 总之对于get和load的根本区别,hibernate对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,就跑出异常,而对于get方法 hibernate一定要获取到真实的数据,否则返回null
分享到:
相关推荐
**初学Hibernate,Hibernate入门** Hibernate是一个开源的对象关系映射(ORM)框架,它为Java开发者提供了方便的数据持久化服务。在Java应用中,通过Hibernate,开发者可以将数据库操作抽象成对象模型,使得代码...
【初学Hibernate的例子】 Hibernate是Java领域中一个非常流行的持久化框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是数据存取的细节。本示例将带你逐步了解如何使用Hibernate3.6进行数据库操作。...
hibernate初学
对于初学者来说,理解并掌握Hibernate的关键概念和技术是非常重要的,因为这可以极大地提高开发效率,减少与数据库交互的复杂性。 Hibernate 允许开发者用面向对象的方式来操作数据库,它通过映射Java类到数据库表...
关于hibernate的Session,向数据插入时的事务隔离级别,持久化对象的状态,对应关系的映射文件,表与表之间的多种映射关系,以及hibernate的二级缓存的笔记。
本教程将基于“Hibernate初学者简单代码”这个主题,深入探讨Hibernate的基本概念、核心功能以及如何在实际项目中应用。 一、Hibernate简介 Hibernate是一个开源的对象关系映射(ORM)框架,它允许开发者用面向对象...
这个“hibernate初学者jar包”显然是针对那些刚接触Java和Hibernate的开发者,帮助他们快速搭建开发环境。 在Java开发中,Hibernate简化了数据库操作,它通过映射Java类到数据库表,使得开发者可以使用面向对象的...
这个"特别适合初学者的Hibernate教程课件"显然旨在帮助新手快速掌握Hibernate的核心概念和使用方法。以下是对Hibernate的一些关键知识点的详细介绍: 1. **对象关系映射(ORM)**:ORM是将数据库中的表映射为Java对象...
**实例二:1_hibernate_ceshi** 该实例进一步深入,可能涉及到关联映射的实践,如一对一、一对多、多对多的关系映射。在实际开发中,数据库中的表往往存在复杂的关联关系,Hibernate通过注解或XML配置来处理这些...
通过这个实例,初学者可以了解如何在Struts1中整合Hibernate进行数据库操作,同时掌握MVC架构下处理用户交互的基本流程。 总结,Struts1和Hibernate是Java Web开发的重要工具,它们分别处理应用程序的控制流和数据...
1. **Spring配置**:包括Bean的定义、依赖注入的实现、AOP的配置以及事务管理。 2. **Struts配置**:理解Struts的配置文件struts.xml,了解Action的配置、结果类型、拦截器的使用等。 3. **Hibernate配置**:学习...
【Servlet+Hibernate 进销存系统】是一种基于Java技术的Web应用程序,主要针对初学者设计,提供了完整的源代码,方便学习和实践。该系统利用Servlet作为服务器端的控制层,Hibernate作为持久化框架来处理数据库操作...
1. 延迟加载:Hibernate-Extensions支持更细粒度的延迟加载控制,例如属性级别的延迟加载,这在处理大数据量时尤其有用,可以显著减少内存消耗。 2. 实体监听器:通过实现EntityListener接口,开发者可以在特定的...
Struts和Hibernate是Java...通过学习和实践这个初学者代码,你可以了解到如何在实际项目中集成Struts和Hibernate,理解它们如何协同工作,以及如何处理Web请求和数据库操作。这将对提升你的Java Web开发技能大有裨益。
综上所述,《Hibernate实战》是一本内容丰富、实用性强的专业书籍,无论对于初学者还是有经验的开发人员来说,都是学习Hibernate框架不可多得的宝贵资源。通过本书的学习,不仅可以快速掌握Hibernate的基本用法,还...
5. **Hibernate Getting Started Guide.pdf**:这可能是Hibernate的入门指南,为初学者提供快速上手的步骤和示例,包括环境搭建、基本配置和简单操作。 **学习Hibernate的关键知识点** 1. **实体管理**:理解...
【Hibernate入门案例源码】是针对初学者设计的一份教程,旨在帮助理解并掌握Java持久化框架Hibernate的基础应用。Hibernate是一个强大的ORM(对象关系映射)框架,它简化了数据库与Java对象之间的交互,使开发者可以...
总之,这个压缩包为初学者提供了一个快速上手Hibernate的环境,包含了必要的依赖,使得开发者可以直接开始构建基于Hibernate的Java应用,而无需花费大量时间在依赖管理上。通过学习和实践,你可以掌握如何使用...
1. **Hibernate框架**:Hibernate是一个强大的ORM(对象关系映射)工具,允许开发者用面向对象的方式处理数据库事务,而无需直接编写SQL语句。它自动处理了对象与数据库之间的转换,提高了开发效率和代码的可维护性...
本教程将带领初学者深入理解Hibernate的第一个项目,帮助你快速入门并掌握其核心概念。 1. Hibernate概述: Hibernate是一个开源的Java库,它提供了一种在Java应用中持久化数据的方式,使得开发者无需编写大量的...