`

Hibernate的总结

    博客分类:
  • java
阅读更多

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之Hibernate总结 SSH(Struts、Spring、Hibernate)是Java Web开发中常见的三大框架,而Hibernate作为ORM(对象关系映射)框架,是连接Java应用程序与数据库的关键组件。本总结将围绕Hibernate的核心概念、配置...

    Hibernate总结

    【Hibernate总结】 Hibernate是一个强大的Java持久化框架,它封装了JDBC,负责对象持久化,作为应用程序和数据库之间的中间层。映射关系是通过配置文件维护的,这使得Hibernate能够与不同的数据库系统灵活地交互。 ...

    hibernate总结练习源码

    本资源包含的"hibernate总结练习源码"提供了对Hibernate ORM框架实际应用的实例,有助于深入理解和掌握其核心概念与功能。 1. **对象关系映射(ORM)**:Hibernate 提供了一种机制,将数据库中的表映射为Java类,表...

    Hibernate总结(三)

    《Hibernate总结(三)》 在本篇关于Hibernate的总结中,我们将深入探讨这个流行的Java对象关系映射(ORM)框架的关键概念和技术细节。Hibernate作为一款强大的工具,它极大地简化了Java开发人员处理数据库操作的工作...

    hibernate 总结

    标题:hibernate总结 描述:此文档是个人在使用Hibernate框架进行数据持久化操作时的经验积累和技巧分享。文档全面覆盖了Hibernate的各种配置方法、数据映射技术、集合类映射、对象关系映射(ORM)基础以及与J2EE...

    hibernate总结

    ### Hibernate总结 #### 一、Hibernate简介 Hibernate是一种在Java环境下使用的对象关系映射(ORM)框架,它能够将Java类映射到数据库表,并管理Java应用中的对象关系与SQL数据库之间的转换。Hibernate的主要目标...

    学习HIbernate总结

    ### 学习Hibernate总结 #### 一、简介与配置 Hibernate是Java环境下一款优秀的对象关系映射(ORM)框架,它极大地简化了数据访问层(DAL)的编码工作,允许开发人员将主要精力集中在业务逻辑上而不是繁琐的SQL语句...

    jdbc_Hibernate总结

    1. 引入Hibernate所需的JAR文件,例如在Eclipse中创建Hibernate类库。 2. 创建配置文件`hibernate.cfg.xml`,其中包含数据库连接信息、日志格式等。 3. 设计实体类,对应数据库表中的记录,并提供对应的getter和...

    hibernate 总结 附 项目

    **总结项目实战** 在实际项目中,使用 Hibernate 可以简化数据库操作,提高开发效率。常见的应用场景包括用户管理、订单处理、商品分类等。项目实践中要注意合理设计实体关系,避免 N+1 查询问题,利用缓存优化性能...

    Hibernate总结——课程管理

    在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。本教程将深入探讨如何使用Hibernate来实现一个简单的课程管理系统,涵盖多对...

    jdbc和hibernate总结

    总结来说,JDBC是基础的数据库访问技术,适合进行简单的数据库操作,而Hibernate则通过提供面向对象的接口,极大地简化了数据库操作,尤其适用于复杂的业务场景。两者结合使用,可以让开发者在享受面向对象编程便利...

    Hibernate4总结文档

    《Hibernate4总结文档》 Hibernate4作为一款强大的Java对象关系映射框架,简化了数据库操作,使得开发者可以更专注于业务逻辑而不是数据库层面的细节。本文将深入探讨Hibernate4的配置和使用,帮助开发者更好地理解...

    hibernate文档总结,技术汇总,PDF版的,hibernate简明参考文档

    总结来说,Hibernate是一个强大的ORM框架,它极大地简化了Java应用的数据库操作,提高了开发效率,并提供了高级特性如缓存、事务管理等。通过深入理解和熟练使用Hibernate,开发者可以构建更高效、更易于维护的...

Global site tag (gtag.js) - Google Analytics