1.hibernate的作用,简化对数据库的编码,使开发人员不必再与复杂的sql语句打交道
做项目大部分都需要用JAVA来链接数据库,比如你要做一个会员注册的 页面,那么 获取到用户填写的 基本信后,你要把这些基本信息存入数据库对应的表中,不用hibernate还有mybatis之类的框架,都不用的话就得用JDBC,也就是JAVA自己的,用这个东西你要写很多的代码,比如保存注册信息 你就写inser的SQL语句,用了hibernate,你只需要把存储注册信息的那个类,用一句hibernate的代码就可以保存了,比如save(user).不用写任何SQL语句,它会自动帮你生成SQL并到数据库执行,这就是HIBERNATE的作用
例子: 对数据库执行插入操作
一般情况: insert into Student(name) values('zhangsan');
hibernate中:Student a=new Student();
a.setName("zhangsan");
HibernateInitialize,getSession().save(a);
2.Hibernate通过读取xml配置文件加载数据库的配置信息,该配置文件默认存放在classPath的根目录下面
xml配置文件示例代码如下:
<?xml version='1.0' encoding='UTF-8'?> <!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="dialect"><!--指定数据库使用的方言--> org.hibernate.dialect.MySQLDialect </property> <property name="connection.url"><!--连接数据库的URL地址--> jdbc:mysql://localhost:3306/db_database16 </property> <property name="connection.username">root</property><!--连接数据库的用户名--> <property name="connection.password">admin</property><!--连接数据库的密码--> <property name="connection.driver_class"><!--连接数据库用的驱动--> com.mysql.jdbc.Driver </property> <mapping resource="com/wgh/model/TbMessage.hbm.xml" /><!--持久化类映射文件--> </session-factory> </hibernate-configuration>
3. 持久化类:根据数据库中的表生成一个类,这个类的属性与表中的属性一一对应,这种方式叫映射
表的字段和类属性的映射,表的字段类型和类属性的数据类型的映射
每个属性都有setXXX()和getXXX()方法
4.如何实现映射? 通过xml文档来实现
示例代码如下:
class中name表示类名,table表示表名,catalog表示数据库的名字(一般不用写,因为配置文件中有)
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.wgh.model.TbMessage" table="tb_message" catalog="db_database16"> <id name="id" column="id" type="int"> <generator class="increment"/> </id> <property name="writer" type="java.lang.String"> <column name="writer" length="45" not-null="true"> <comment>留言人</comment> </column> </property> <property name="content" type="java.lang.String"> <column name="content" length="200" not-null="true"> <comment>留言内容</comment> </column> </property> <property name="sendTime" type="java.sql.Timestamp"> <column name="sendTime" length="19" not-null="false"> <comment>留言时间</comment> </column> </property> </class> </hibernate-mapping>
5.Session对象是Hibernate中数据库持久化的核心,它负责Hibernate的所有持久化操作,通过它,可以对数据库实现增删查改操作.但是session对象不是线程安全的,所以要创建一个线程安全的session对象,用到了ThreadLocal开发模式,示例代码如下:
package com.wgh; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.wgh.model.TbMessage; public class HibernateUtil { static SessionFactory sessionFactory; private Session session=null; private Transaction tx =null; //初始化Hibernate,创建SessionFactory实例,只在该类被加载到内存时执行一次 static{ try{ Configuration config = new Configuration().configure(); //config.addClass(TbMessage.class); sessionFactory = config.buildSessionFactory(); } catch (Exception e) { System.out.println("static块中:"+e.getMessage()); } } //开启session public void openSession() { session = sessionFactory.openSession(); tx = session.beginTransaction();//开启事务 } //获取留言信息列表 public List<TbMessage> listMessage(){ openSession();//开启session String hql="FROM TbMessage m ORDER BY m.sendTime DESC"; //降序查询全部留言信息 List<TbMessage> list=null; try{ Query query=session.createQuery(hql); list=(List<TbMessage>)query.list(); }catch(Exception e){ System.out.println("查询时的错误信息:"+e.getMessage()); }finally{ session.close(); } return list; } //获取指定留言信息 public TbMessage getMessage(int id){ openSession();//开启session TbMessage tbMessage=(TbMessage)session.get(TbMessage.class, id);//通过get方法查询指定ID的留言信息 session.close(); //关闭session return tbMessage; } //修改留言信息 public String updateMessage(TbMessage message){ try{ openSession();//开启session //在应用update()方法时,应该先调用get()方法加载数据,然后再调用update()方法更新数据 TbMessage m=(TbMessage)session.get(TbMessage.class,message.getId()); m.setWriter(message.getWriter()); m.setContent(message.getContent()); session.update(m);//应用update()方法修改留言信息到数据库 tx.commit(); //提交事务 closeSession();//关闭session return "留言信息修改成功!"; }catch(Exception e){ e.printStackTrace(); tx.rollback();//事务回滚 return "修改留言信息失败!"; } } //关闭session public void closeSession() { session.close(); } }
相关推荐
SSH之Hibernate总结 SSH(Struts、Spring、Hibernate)是Java Web开发中常见的三大框架,而Hibernate作为ORM(对象关系映射)框架,是连接Java应用程序与数据库的关键组件。本总结将围绕Hibernate的核心概念、配置...
【Hibernate总结】 Hibernate是一个强大的Java持久化框架,它封装了JDBC,负责对象持久化,作为应用程序和数据库之间的中间层。映射关系是通过配置文件维护的,这使得Hibernate能够与不同的数据库系统灵活地交互。 ...
本资源包含的"hibernate总结练习源码"提供了对Hibernate ORM框架实际应用的实例,有助于深入理解和掌握其核心概念与功能。 1. **对象关系映射(ORM)**:Hibernate 提供了一种机制,将数据库中的表映射为Java类,表...
《Hibernate总结(三)》 在本篇关于Hibernate的总结中,我们将深入探讨这个流行的Java对象关系映射(ORM)框架的关键概念和技术细节。Hibernate作为一款强大的工具,它极大地简化了Java开发人员处理数据库操作的工作...
标题:hibernate总结 描述:此文档是个人在使用Hibernate框架进行数据持久化操作时的经验积累和技巧分享。文档全面覆盖了Hibernate的各种配置方法、数据映射技术、集合类映射、对象关系映射(ORM)基础以及与J2EE...
### Hibernate总结 #### 一、Hibernate简介 Hibernate是一种在Java环境下使用的对象关系映射(ORM)框架,它能够将Java类映射到数据库表,并管理Java应用中的对象关系与SQL数据库之间的转换。Hibernate的主要目标...
### 学习Hibernate总结 #### 一、简介与配置 Hibernate是Java环境下一款优秀的对象关系映射(ORM)框架,它极大地简化了数据访问层(DAL)的编码工作,允许开发人员将主要精力集中在业务逻辑上而不是繁琐的SQL语句...
1. 引入Hibernate所需的JAR文件,例如在Eclipse中创建Hibernate类库。 2. 创建配置文件`hibernate.cfg.xml`,其中包含数据库连接信息、日志格式等。 3. 设计实体类,对应数据库表中的记录,并提供对应的getter和...
**总结项目实战** 在实际项目中,使用 Hibernate 可以简化数据库操作,提高开发效率。常见的应用场景包括用户管理、订单处理、商品分类等。项目实践中要注意合理设计实体关系,避免 N+1 查询问题,利用缓存优化性能...
在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。本教程将深入探讨如何使用Hibernate来实现一个简单的课程管理系统,涵盖多对...
总结来说,JDBC是基础的数据库访问技术,适合进行简单的数据库操作,而Hibernate则通过提供面向对象的接口,极大地简化了数据库操作,尤其适用于复杂的业务场景。两者结合使用,可以让开发者在享受面向对象编程便利...
《Hibernate4总结文档》 Hibernate4作为一款强大的Java对象关系映射框架,简化了数据库操作,使得开发者可以更专注于业务逻辑而不是数据库层面的细节。本文将深入探讨Hibernate4的配置和使用,帮助开发者更好地理解...
总结来说,Hibernate是一个强大的ORM框架,它极大地简化了Java应用的数据库操作,提高了开发效率,并提供了高级特性如缓存、事务管理等。通过深入理解和熟练使用Hibernate,开发者可以构建更高效、更易于维护的...