当前位置:首页 > 开发 > 编程语言 > Hibernate > 正文

Hibernate入门

发表于: 2014-12-27   作者:tntxia   来源:转载   浏览:
摘要:   前言   使用面向对象的语言和关系型的数据库,开发起来很繁琐,费时。由于现在流行的数据库都不面向对象。Hibernate 是一个Java的ORM(Object/Relational Mapping)解决方案。   Hibernte不仅关心把Java对象对应到数据库的表中,而且提供了请求和检索的方法。简化了手工进行JDBC操作的流程。   如

 

前言

 

使用面向对象的语言和关系型的数据库,开发起来很繁琐,费时。由于现在流行的数据库都不面向对象。Hibernate 是一个Java的ORM(Object/Relational Mapping)解决方案。

 

Hibernte不仅关心把Java对象对应到数据库的表中,而且提供了请求和检索的方法。简化了手工进行JDBC操作的流程。

 

如何使用Hibernate:

 

增加Hibernate的数据库配置文件:

 

首先,我们要增加:

 

hibernate.cfg.xml 位置在类包中。

 

hibernate.cfg.xml的内容:

 

 

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>

        <!-- Database connection settings -->
        <property name="connection.driver_class">org.h2.Driver</property>
        <property name="connection.url">jdbc:h2:db/h2manager</property>
        <property name="connection.username">tntxia</property>
        <property name="connection.password">123456</property>

        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.H2Dialect</property>

        <!-- Disable the second-level cache  -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>

        <!-- Drop and re-create the database schema on startup -->
        <property name="hbm2ddl.auto">create</property>
        
        <mapping resource="com/tntxia/test/hibernate/Entity/Event.hbm.xml"/>

    </session-factory>

</hibernate-configuration>
 

 

然后,我们再在com/tntxia/test/hibernate/Entity里面增加一个Event.hbm.xml的配置文件。

 

如下:

 

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.tntxia.test.hibernate.Entity">

    <class name="Event" table="EVENTS">
        <id name="id" column="EVENT_ID">
            <generator class="increment"/>
        </id>
        <property name="date" type="timestamp" column="EVENT_DATE"/>
        <property name="title"/>
    </class>

</hibernate-mapping>

 

Java的测试代码如下:

 

package com.tntxia.test.hibernate;


import java.util.Date;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import com.tntxia.test.hibernate.Entity.Event;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// A SessionFactory is set up once for an application
		SessionFactory sessionFactory = new Configuration()
                .configure() // configures settings from hibernate.cfg.xml
                .buildSessionFactory();
     // create a couple of events...
     		Session session = sessionFactory.openSession();
     		session.beginTransaction();
     		session.save( new Event( "Our very first event!", new Date() ) );
     		session.save( new Event( "A follow up event", new Date() ) );
     		session.getTransaction().commit();
     		session.close();

     		// now lets pull events from the database and list them
     		session = sessionFactory.openSession();
             session.beginTransaction();
             List<Event> result = session.createQuery( "from Event" ).list();
     		for ( Event event : (List<Event>) result ) {
     			System.out.println( "Event (" + event.getDate() + ") : " + event.getTitle() );
     		}
             session.getTransaction().commit();
             session.close();
		
	}

}

 

 这个例子中,我们插入了两条记录。然后又把这两条记录查询出来。

 

当我们再写一个查询的语句时,

 

 

package com.tntxia.test.hibernate;


import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import com.tntxia.test.hibernate.Entity.Event;

public class Test2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// A SessionFactory is set up once for an application
		SessionFactory sessionFactory = new Configuration()
                .configure() // configures settings from hibernate.cfg.xml
                .buildSessionFactory();
     // create a couple of events...
     		Session session = sessionFactory.openSession();
     		
            session.beginTransaction();
            List<Event> result = session.createQuery( "from Event" ).list();
    		for ( Event event : (List<Event>) result ) {
    			System.out.println( "Event (" + event.getDate() + ") : " + event.getTitle() );
    		}
            session.getTransaction().commit();
            session.close();
		
	}

}
 

 

 发现刚刚插入的数据,无法查询出来。因为hbm2ddl.auto的属性为true,每次运行,数据库都会重建,所以应该把这个属性删掉。

 

 

 

Hibernate入门

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
hibernate详解一 hibernate是一个Java开发框架,属于ssh框架中的第三层,工作在数据持久层中,可以
Hibernate介绍: 持久化java对象 封装了JDBC,实现了or-mapping一个开源的持久层框架 orm:(ObjectRe
ORM:Object Relation Mapping; 阻抗不匹配:现在我们常用的编程语言都是面向对象的,而常用的数据
Hibernate对JDBC API进行了封装,负责持久化Java对象;在软件架构的分层中位于持久层,封装了访问数
Hibernate 环境配置 Hibernate.cfg.xml - 配置数据库的有关信息,如URL/DRIVER/USERNAME/PASSWORD等
提问: (这一些题是答辩或是面试可能遇到的或是我经常搞混的题) 1 JDBC是什么? JDBC(Java DataB
Hibernate入门 基本概述 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级
1.Configuration类 是Hibernate的入口,它负责配置并启动Hibernate。Hibernate通过Configuration的
*.关于持久化这个概念! ■顾名思义就是把缓存中的java对象放到数据库中使之持久.对于需要持久化的
所需工具: ide:eclipse or myeclipse jdk:1.7 jar包:hibernate-distribution-3.6.0.Final 和对
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号