`

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.pdf

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

    深入浅出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 ...

    中文 深入浅出Hibernate

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

    深入浅出Hibernate

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

    深入浅出Hibernate2

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

    \深入浅出Hibernate

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

    《深入浅出Hibernate》1

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

    夏昕.深入浅出Hibernate

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

    Grails 中文参考手册

    2. 起步 2.1 下载并安装Grails 2.2 创建一个Grails应用 2.3 Hello World示例 2.4 使用IDE 2.5 规约配置 2.6 运行Grails应用 2.7 测试Grails应用 2.8 部署Grails应用 2.9 所支持的Java EE容器 2.10 创建工件 2.11 ...

    lamp-cloud微服务脚手架

    故在hibernate-validator的基础上封装了zuihou-validator-starter起步依赖,提供一个通用接口,可以获取需要校验表单的规则,然后前端使用后端返回的规则, 以后若规则改变,只需要后端修改即可。 12、防跨站脚本...

    una-boot-backup:一个基于spring boot 2.0的简单易用的Java博客系统,欢迎关注并收起它

    尤娜是站在巨人的前面上开发完成的博客系统,旨在为程序员提供一个极简的内容创作管理平台,尤娜100%她才刚刚起步,或许存在很多不足,但极简是她至始至终的性格,如果您需要对她感兴趣,Fork她,并充满的与之玩耍...

    lamp-cloud微服务脚手架-其他

    故在hibernate-validator的基础上封装了zuihou-validator-starter起步依赖,提供一个通用接口,可以获取需要校验表单的规则,然后前端使用后端返回的规则, 以后若规则改变,只需要后端修改即可。 12、防跨站脚本...

Global site tag (gtag.js) - Google Analytics