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. [unroll(num)] for(int i;i<num;i++)

    https://msdn.microsoft.com/en-us/library/windows/desktop/bb509602(v=vs.85).aspx Unroll the loop unti ...

  2. unset之讲解

    unset (PHP 4, PHP 5) unset — 释放给定的变量 说明¶ void unset ( mixed $var [, mixed $... ] ) unset() 销毁指定的变量. ...

  3. set gameobject Icons by Script

    有很多时候我们需要在编辑器查看一个Gameobject的移动,有些人采用Gizoms类,可是如果不想用,可以使用U3D内置的Icon类. 但是如果想在脚本中设置而不是通过手动选择呢? Google之, ...

  4. Static、final、abstract、接口、构造方法及java语法总结

    Static:定义类的时候一般不用static来修饰,在一定意义上,用static修饰的字段可以作为全局变量,static修饰的字段和方法存储在类的内存区域,所有实例共享.static字段和方法都是属 ...

  5. SGU 105

    There is sequence 1, 12, 123, 1234, ..., 12345678910, ... . Given first N elements of that sequence. ...

  6. 同一网站不同和二级域名和不同子目录的cookie

    1.cookie二级域名的实现: 用户其中一个站点登录,而且可以各个子频道间切换,保持登录状态设置Cookie时,使用如下代码即可:setcookie(name,value,expire,path,& ...

  7. github and SourceTree初步使用

    1.建立连接(一次就行了) 输入你的github名字 2.创建仓库 3.下载仓库 这个时候打开SouceTree就可以看到之前创的仓库了 点击克隆,创建一个文件夹,讲路径设置好 这时候查看本地列表就会 ...

  8. POJ 1466

    #include<iostream> #include<stdio.h> #define MAXN 505 using namespace std; int edge[MAXN ...

  9. C# 和Jsonp的一个小demo 用jQuery与JSONP轻松解决跨域访问的问题

    客服端:      在A项目下面 建立一个 JsonpClient.aspx页面,代码如下: <%@ Page Language="C#" AutoEventWireup=& ...

  10. C# 前台线程与后台线程的区别和联系

    c#前台线程与后台线程的区别和联系http://www.189works.com/article-13702-1.html 如何取消后台线程的执行http://www.cnblogs.com/shan ...