1.jdbc连接的优缺点

JDBC的优点

直接底层操作,提供了很简单、便捷的访问数据库的方法,跨平台性比较强。灵活性比较强,可以写很复杂的SQL语句。

JDBC的缺点

1).因为JAVA是面向对象的,JDBC没有做到使数据能够面向对象的编程,使程序员的思考仍停留在SQL语句上。

2).操作比较繁琐,很多代码需要重复写很多次。

3).如果遇到批量操作,频繁与数据库进行交互,容易造成效率的下降。

Jdbc是一个比较底层的东西,灵活写SQL语句

1)、注册驱动

2)、获得连接

3)、产生一个Statement

4)、进行操作

返回数据ResultSet

1)、new List对象

2)、把ResultSet数据放入List过程中

A a = new A();

a.setXXX(rs.getString("xxx"));

代码比较繁琐,纯的JDBC是没有缓存的。

2. hibernate引言

l 模型不匹配(阻抗不匹配)

Java面向对象语言,对象模型,其主要概念有:继承、关联、多态等;数据库是关系模型,其主要概念有:表、主键、外键等。

l 解决办法

1使用JDBC手工转换。

2使用ORM(Object Relation Mapping对象关系映射)框架来解决。

对象模型中对象与对象之间的关联关系与关系模型中数据库表之间的关系无法一一对应。

对象模型中对象的继承关系在关系模型中无法直接表示。

对象模型中对象的等值性(equals)在关系模型中无法直接实现。

对象模型中有关联的对象之间的导航访问在关系模型中无法直接实现。

3  hibernate

l Hibernate是一个开源ORM框架。

l ORM全称Object Relation Mapping,即对象关系映射。它是一种用来完成对象模型到关系模型的映射技术。就是把应用程序中的对象数据持久化到关系数据库的表的一种技术。

l 使用ORM( Object Relation Mapping )框架来解决。主流的ORM框架有JBoss公司的Hibernate、Oracle公司的TopLink、Apache组织的OJB、Sun公司的JDO。

l 简单的说:ORM能利用面向对象的思想开放基于关系型数据库的应用程序,它的主要工作是将对象数据保存到关系数据库的表中,以及将关系数据库表中数据读入到对象中。

4安装配置

下载地址http://www.hibernate.org,这里举例使用的是3.3版本。解压获取必需类库文件。将下载目录/hibernate3.jar和/lib下的hibernate运行时必须的包加入classpath中:

需要使用的jar包以及jar包对应含义如下:

l 配置文件hibernate.cfg.xml和hibernate.properties,XML和properties两种,这两个文件的作用一样,提供一个即可,推荐XML格式,下载目录/etc下是示例配置文件,后者中列举的更详细,主要是与各种数据库连接模版。

l可以在配置文件指定

数据库的URL、用户名、密码、JDBC驱动类、方言等。

启动时Hibernate会在CLASSPATH里找这个配置文件。

l 映射文件(hbm.xml,对象模型和关系模型的映射)。在/eg目录下有完整的hibernate示例。

l一个小例子步骤

1).新建java或web项目,并加入相应的jar包及jdbc驱动。

2).创建持久化类(java bean)

3).准备数据库表

4).创建配置文件 hibernate.cfg.xml

5).创建映射文件 xxx.hbm.xml(与bean类在同一个包中)

6).创建测试文件(测试本项目)

5  细节分析

Hibernate.connection.url 表示要链接的数据库地址

Hibernate.connection.driver_class表示要链接的数据库的驱动类

Hibernate.connection.username 要连接的数据库的用户名

Hibernate.connection.password 要连接的数据库的密码

Hibernate.dialect 表示要使用的数据库的类型

org.hibernate.dialect.MySQL5Dialect mysql数据库

org.hibernate.dialect.Oracle9Dialect oracle数据库

org.hibernate.dialect.SQLServerDialect SQLServer数据库

hibernate.hbm2ddl.auto

validate:加载hibernate时验证创建表结构

update:加载hibernate时自动更新数据库结构,如果表存在不用创建,如果不存在就创建。

create:每一次加载hibernate时都创建表结构

create-drop:加载hibernate时创建,退出时删除

6. 基本概念和CURD

开发流程:

1、由Domain object -> mapping->db。(官方推荐)

2、由DB开始,用工具生成mapping和Domain object。(使用较多)

3、由映射文件开始。

Domain Object限制

1、默认的构造方法(必须的)。

2、有无意义的标示符id(主键)(可选)

3、非final的,对懒加载有影响(可选)

7.案例说明

Domain Java Object(User)

public class User {

private int id;

private String name;

private Date birthDay;

//getter setter…

}

l 对象关系映射文件:把面向对象中的实体类对象映射到数据库中的实体(表的记录),把实体类之间的关联关系也映射到数据库中多个表之间的相互关系中。这样,在Hibernate中对这些实体对象的操作就直接转换为对数据库表的记录的操作。

user.hbm.xml

<?xml version="1.0"?>

<hibernate-mapping package=“cn.itcast.domain">

<class name="User" table="user">

<id name="id">

<generator class="native"/>

</id>

<property name="name"/>

<property name="birthday”/>

</class>

</hibernate-mapping>

hibernate.cfg.xml

<!DOCTYPEhibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factoryname="foo">

<propertyname="connection.driver_class">com.mysql.jdbc.Driver</property>

<propertyname="connection.url">jdbc:mysql:///hibernate</property>

<propertyname="connection.username">root</property>

<propertyname="connection.password">root</property>

<propertyname="dialect">org.hibernate.dialect.HSQLDialect</property>

<propertyname="show_sql">true</property>

<propertyname="hbm2ddl.auto">update</property>

<mappingresource="com/hbsi/domain/User.hbm.xml"/>

</session-factory>

</hibernate-configuration>

测试类 DemoTest.java

package com.hbsi.test;

import java.text.DateFormat;

import java.text.ParseException;

import java.util.Date;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

import com.hbsi.domain.User;

public class UserTest {

/**

* @param args

* @throws ParseException

*/

public static void main(String[] args) throws ParseException {

//给user类字段赋值

User user = new User();

user.setName("aa");

//user.setBirthday(new Date());

user.setBirthday(DateFormat.getDateInstance().parse("1992-01-01"));

//获取hibernate.cfg.xml的配置文件

Configuration cfg = new Configuration().configure();

//从session工厂中获取session,相当于jdbc中的connection

SessionFactory factory = cfg.buildSessionFactory();

Session session = factory.openSession();

session.beginTransaction();

session.save(user);

session.getTransaction().commit();

session.close();

}

}

概述hibernate入门安装配置的更多相关文章

  1. Hibernate入门3.配置映射文件深入

    Hibernate入门3.配置映射文件深入 2013.11.27 前言: 之前的两节是在Java项目中如何使用hibernate,并且通过一个简单地项目实践,期间有很多的错误,一般都是因为配置包的问题 ...

  2. Hibernate入门案例配置以及增、删、改、查看

    享受痛苦就是走向成功的第一步. 一.创建一个项目(lib里面是需要的夹包小奶瓶要导包) 二.书写大配置文件 大配置文件必须放置在项目根目录(专业classpath下):界定:就是src 1名称:hib ...

  3. hibernate入门-基本配置及简单的crud操作

    框架来说主要是需要写大量的配置文件,hibernate相比mybatis来说更强大,移植性更好: 1.类和数据库的映射配置:配置文件命名一般--类名.hbm.xml (user.hbm.xml),与实 ...

  4. Laravel 5.5 文档 ] 快速入门 —— 安装配置篇

    服务器要求 Laravel 框架对PHP版本和扩展有一定要求,不过这些要求 Laravel Homestead 都已经满足了,不过如果你没有使用 Homestead 的话(那真是一件很遗憾的事情),有 ...

  5. 双机冗余备份和负载均衡策略(Mysql Cluster入门安装配置指南)

    MySQL Cluster 是MySQL适合于分布式计算环境的高实用.高冗余版本.它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器.MySQL Clus ...

  6. windows服务器入门 安装配置IIS和ASP

    本人以windows2012R2为例   其他版本都大同小异   可以按照这个来 1) 点击Windows云服务器左下角[开始(Start)],选择[服务器管理器(Server Manager)],打 ...

  7. 转载maven安装,配置,入门

    转载:http://www.cnblogs.com/dcba1112/archive/2011/05/01/2033805.html 本书代码下载 大家可以从我的网站下载本书的代码:http://ww ...

  8. Debian 入门安装与配置2

    Debian 入门安装与配置2 1. C/C++开发必装软件 atp-get install gcc    这个不用说,用来编译C程序 apt-get install g++ 用来编译C++程序 ap ...

  9. Debian 入门安装与配置1

    Debian 入门安装与配置1 最近安装了多个发行版本的Linux,包括Ubuntu.Fedora.Centos和Debian,发现只有Debian在界面和稳定性等综合特性上表现最优,自己也最喜欢,所 ...

随机推荐

  1. android SDK更新

    在proxy.ini里的[profile]下加上如下配置即可更新android SDK了 dl-ssl.google.com = nofakehttps Oct 26, 2014 #2 2828qw. ...

  2. Python:Python 3.x 的革新

    Python 3.x 版本在设计时为了向最好的语言前进,没有考虑向下兼容,许多针对早期 Python 版本设计的程序都无法正常运行.本文简单介绍了 Python 3.x 版本较之 2.x 版本语法上的 ...

  3. Ruby探针的基本实现原理

    李哲 - MAY 13, 2015 语言本身 Ruby语言支持语法级别的系统,框架,甚至语言本身的方法复写,一般叫做元编程(meta programming), 此基础之上还有一些术语为mixin,方 ...

  4. Java 延时常见的几种方法

    1. 用Thread就不会iu无法终止 new Thread(new Runnable() { public void run() { while (true) { test(); try { Thr ...

  5. myeclipse 10的破解以及运行run.bat错误或者双击立即消失的问题

    安装包下载: ed2k://|file|[myeclipse.10.0.更新发布].myeclipse-10.0-offline-installer-windows.exe|947752488|73b ...

  6. Pots of gold game:看谁拿的钱多

    问题描述: Pots of gold game: Two players A & B. There are pots of gold arranged in a line, each cont ...

  7. (转)c语言随机数srandom( )

    转自:http://zhidao.baidu.com/question/334364810.html调用随机数函数 rand()() 的时候, 实际得到的这个随机数并不是绝对随机的,它是以一个初始值, ...

  8. Content Providers详解

    今天仔细阅读了一遍Content Providers的官方API文档,总结了一下Android中Content Providers的用法. 各种类型的Content Provider对一个结构化的数据 ...

  9. 深入浅出ES6(十一):生成器 Generators,续篇

    作者 Jason Orendorff  github主页  https://github.com/jorendorff 欢迎回到深入浅出ES6专栏,望你在ES6探索之旅中收获知识与快乐!程序员们在工作 ...

  10. 2014多校第六场 1005 || HDU 4925 Apple Tree

    题目链接 题意 : 给你一块n×m的矩阵,每一个格子可以施肥或者是种苹果,种一颗苹果可以得到一个苹果,但是如果你在一个格子上施了肥,那么所有与该格子相邻(指上下左右)的有苹果树的地方最后得到的苹果是两 ...