`

Hibernate快速起步

阅读更多

创建第一个Hibernate实例:

 

  • 创建实例数据库:名为hibernatetest;及库表tUser,tUser中包含“id”,“name”两个字段;
  • 构建Hibernate基础代码:POJO类和Hibernate映射文件;

 

POJO类就是无格式普通的java类,可以简单的理解为一个不包含逻辑代码的值对象(Value Object,简称VO),从数据库层来看,POJO作为数据实体的对象化表现形式,也称实体类。数据库tUser与其相对应的实体类命名为:Tuser.java

例:

 

public class Tuser implements Serializable{
	
	private Integer id;
	private String name;

	public Tuser() {
	}
....
}

 

tUser类在这里体现的是ORM中的Object层的语义,即对“用户”实体的抽象,它包含了“用户”相关属性。

tUser表是关系型数据库表,用于存储“用户”数据,根据Object和数据库定义,就可以通过映射文件建立两者之间的关联(映射)关系,这就是所谓的Mapping。

Hibernate是一种“对象---关系型数据库映射组件”,它使用映射文件将对象(object)与关系型数据(Relational)相关联。在Hibernate中通常用"*.hbm.xml"作为后缀;

构建Hibernate基础代码,有很多工具,包括常用的MyEclipse中也有,新手建议手工编写;

  • 添加Hibernate所需的jar包:

hibernate-distribution-3.5.3-Final/lib/required下左右jar文件;

hibernate下的hibernate3.jar;

  • Hibernate配置

 

Hibernate配置文件主要用于配置数据库连接和Hibernate运行时所需的各种属性;Hibernate支持XML格式的配置文件和传统的.properties文件配置方式,建议用XML配置文件。XML的结构清晰,可读性好,可以直接对映射文件加以配置并由Hibernate自动加载,而.properties文件的方式,无法做到这一点(必须在程序中通过编码进行加载);

Hibernate配置文件名默认为:“hibernate.cfg.xml”(Hibernate.properties),Hibernate初始化会在CLASSPATH中寻找这个文件,并读取信息,为后期数据库操作做好准备;不推荐Hibernate内在连接池;使用第3方连接池!

典型的Hibernate配置文件如下:

 

<?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>

        <!-- Database connection settings -->
        <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>

        <property name="connection.url">jdbc:hsqldb:hsql://localhost</property>

        <property name="connection.username">sa</property>

        <property name="connection.password"></property>

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

        <!-- Enable Hibernate's automatic session context management -->
        <property name="current_session_context_class">thread</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">update</property>

        <mapping resource="org/hibernate/tutorial/domain/Event.hbm.xml"/>

    </session-factory>
</hibernate-configuration>

日志配置:采用log4j;在hibernate/lib/required下有slf4j-api-1.5.8.jar,这只是api需要为其添加实现:slf4j-log4j12-1.5.8.jar,使用slf4j-log4j,必须添加log4j的实现:log4j-1.2.16.jar;然后从/project/etc下的log4j.properties复制到项目的SRC下,log4j.properties中需要这样的配置即可:

 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.rootLogger=warn, stdout
log4j.logger.org.hibernate=info
log4j.logger.org.hibernate.type=info
log4j.logger.org.hibernate.tool.hbm2ddl=debug

 

我们需要一个Hibernate工具类(HibernateUtil.java  ),来创建Session:

 

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

public class HibernateUtil {
    private static final SessionFactory sessionFactory = buildSessionFactory();
    private static SessionFactory buildSessionFactory() {
        try {
            return new Configuration().configure().buildSessionFactory();
        }
        catch (Throwable ex) {
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;

    }
}
 

 

 以上完成了基础代码和Hibernate所需要的配置文件,感受下Hibernate所提供的功能,体验下Hibernate强大的功能:

 

	public static void saveTest() {
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
		Tuser tUser = new Tuser();
		tUser.setName("keith");
		session.save(tUser);
		session.getTransaction().commit();
	}

 

 可以看到控制台上的输出:

 

Hibernate: insert  into  tUser(uName)  values(?)

 

 看下数据库,发现tUser中会多条数据;

在java中如果要进行数据库访问,一般均通过JDBC进行,期间需要进行SQL语句的编写,并通过JDBC执行这些SQL语句;通过上面例子,我们可以看出基于Hibernate的数据插入操作并不需要指定对应的SQL语句,也能完成此操作,但是代码中仅仅先用实体类的set()方法,然后session.save()操作就完成了;这正是Hibernate优势所在,它对JDBC进行了妥善封装,会自动根据对象和表之间的映射关系,将对象操作转换为SQL加以执行;

在基于JDBC的实际开发中,还需要考虑更多的问题,如:连接的关闭策略(一旦程序中出现连接泄漏,对于整个程序带来的后果可能是致命的),连接池和Statement缓存的应用等;另外一旦库表或表字段发生更改意味着开发人员要改变其SQL和其相关代码;

1
2
分享到:
评论

相关推荐

    深入浅出Hibernate中文版 part1

    第3章 快速起步 3.1 准备工作 3.2 Hibernate配置 3.3 日志配置 3.4 第一段代码 3.5 代码初解 第4章 Hibernate基础 4.1 Hibernate基础语义 4.2 基础配置 4.3 Hibernate O/R映射 4.4 数据关联 4.5 ...

    深入浅出Hibernate(PDF)第一部分

    Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供读者对比与参考,也给初学者提供了一个快带起步的基础。...

    hibernate所需要的所有jar包

    **标题解析:** "hibernate所需要的所有jar包" 指的是...总的来说,这个压缩包是一个全面的Hibernate开发环境起步包,包含运行Hibernate应用所需的所有组件,适用于初学者快速上手或者为现有项目添加Hibernate支持。

    深入浅出Hibernate(PDF)第二部分

    Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供读者对比与参考,也给初学者提供了一个快带起步的基础。...

    深入浅出hibernate(PDF)第三部分

    Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供读者对比与参考,也给初学者提供了一个快带起步的基础。...

    深入浅出Hibernate中文版 part2

    第3章 快速起步 3.1 准备工作 3.2 Hibernate配置 3.3 日志配置 3.4 第一段代码 3.5 代码初解 第4章 Hibernate基础 4.1 Hibernate基础语义 4.2 基础配置 4.3 Hibernate O/R映射 4.4 数据关联 4.5 ...

    springboot+hibernate基础项目

    5. **Spring Boot整合Hibernate**:Spring Boot通过`spring-boot-starter-data-jpa`起步依赖自动配置了Hibernate。只需在配置文件中指定数据库连接信息,Spring Boot就会自动创建SessionFactory,并在需要时提供...

    中文 深入浅出Hibernate

    Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供读者对比与参考,也给初学者提供了一个快带起步的基础。...

    HIbernate Jpa 生成entities

    此外,虽然自动化的代码生成可以快速起步,但有时仍需根据业务需求进行手动调整。 7. **文档资源** 提供的“JPA to entities.doc”文档很可能是对这个过程的详细步骤或者相关知识点的进一步解释,建议查阅以获取更...

    SpringBoot/SpringMVC/Hibernate整合源码(不用Maven也行)

    Spring Boot的核心理念是“约定优于配置”,它提供了一种快速构建独立的、生产级别的基于Spring的应用程序的方法。无需大量的XML配置,而是通过自动配置和起步依赖来简化项目结构。 1. **起步依赖**:Spring Boot...

    深入浅出Hibernate

    本书有丰富的附录部,在附录中讲述了Hibernate常用的映射配置,Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供...

    深入浅出Hibernate2

    Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供读者对比与参考,也给初学者提供了一个快带起步的基础。...

    springboot+hibernate+maven+jpa

    SpringBoot是Spring框架的一个子项目,它简化了初始化和配置Spring应用的过程,使得开发者能够快速启动项目。SpringBoot的核心特性包括自动配置、内嵌Web服务器(如Tomcat)和起步依赖。通过起步依赖,开发者可以...

    hibernate3.0 和数据库生成pojo类的工程方法

    虽然自动生成的代码可以快速起步,但通常需要根据项目需求进行调整。比如,添加懒加载、缓存策略、事务管理等高级特性。此外,合理设计实体类的继承结构,利用集合类型处理一对多、多对一关系,也是提高代码可维护...

    \深入浅出Hibernate

    本书有丰富的附录部,在附录中讲述了Hibernate常用的映射配置,Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供...

    1、springboot入门案例helloworld与集成hibernate

    创建一个新的 Maven 项目,并在 `pom.xml` 文件中添加 SpringBoot 的起步依赖,例如 `spring-boot-starter-web` 和 `spring-boot-starter-data-jpa`,后者包含了对 Hibernate 的支持。 接下来,我们需要定义实体类...

Global site tag (gtag.js) - Google Analytics