1.[精通Hibernate笔记]Hibernate简介

简介:

Hibernate是Java应用关系数据库之间的桥梁,负责Java对象和关系数据之间的映射。Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供面向对象的数据访问API。

Hibernate配置文件

Hibernate从其配置文件中读取和数据库连接有关的信息,Hibernate的配置文件有两种形式,配置文件默认文件名hibernate.properties;另一种是XML格式的文件;还有一种是Java属性文件,采用键值对形式。

1
2
3
4
5
6
hibernate.dialect=net.sf.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://localhost:3306/SAMPLEDB
hibernate.connection.username=root
hibernate.connection.password=1234
hibernate.show_sql=true

创建持久化类

持久化类是指其实例需要被Hibernate持久化到数据库的类。持久化类通常都是域模型的实体域类。持久化类符合JavaBean规范,包含属性,以及与之对对应的getXXX()和setXXX()方法。

Hibernate不需要持久化类必须实现java.io.Serializable接口,但对于采用分布式结构的Java应用,当Java对象在不同的进程节点之间传输时,这个对象所属的类必须实现Serializable接口。

在Java Web应用中,如果希望对HttpSession中存放的Java对象进行持久化,这个Java独享所属的类必须实现Serializable接口。

Hibernate要求持久化类必须提供一个不带参数的默认构造方法,在程序运行时,Hibernate运用Java反射机制,调用java.lang.reflect.Constructor.newInstance()方法来构造持久化类的实例。

创建对象-关系映射文件

在运行时,Hibernate将根据这个映射文件来生成各种SQL语句。

Java类型、Hibernate映射类型以及SQL类型之间的对应关系

Java类型

Hibernate类型

SQL类型

java.lang.String

string

VARCHAR(n)

int

int

INT

char

character

CHAR(n)

boolean

boolean

BIT

byte[]

binary

BLOG

java.sql.Date

date

DATE

java.sql.Timestamp

timestamp

TIMESTAMP

通过Hibernate API操作数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public  class  BussinessService {
     public  static  SessionFactory sessionFactory;
     static  {
         try  {
             Configuration config =  new  Configuration();
             config.addClass(Customer. class );
             sessionFactory = config.buildSessionFactory();
         catch  (Exception e) {
         }
     }
     public  void  deleteAllCustomers()  throws  Exception {
         Session session = sessionFactory.openSession();
         Transaction tx =  null ;
         try  {
             tx = session.beginTransaction();
             session.delete( "from Customer as C" );
             tx.commit();
         catch  (Exception e) {
             if  (tx !=  null )
                 tx.rollback();
             throw  e;
         finally  {
             session.close();
         }
     }
}

Hiberante初始化

创建一个Configuration类的实例,Configuration类的构造方法把默认文件路径下的hibernate配置文件中配置信息读入到内存;

调用Configuration类中的addClass(Customer.class)方法,该方法把映射信息读入到内存中;

调用Configuration类的buildSessionFactory()方法,该方法创建一个SessionFactory实例,并发Configuration对象包含的配置信息拷贝到SessionFactory对象的缓存中。SessionFactory达标一个数据库存储源,一个数据库存储源值需创建一个SessionFactory实例,SessionFactory不和Configuration关联,如果修改Configuration对象包含的配置信息不会对SessionFactory对象有任何影响。

访问Hibernate的Session接口

初始化结束后,调用SessionFactory实例的openSession()方法类获得Session实例,然后通过它执行数据库的操作,Session接口提供操作数据库的各种方法:

save()方法:把Java独喜爱那个保存到数据库

update()方法:更新数据库的Java队形

delete()方法:把Java对象从数据库中删除

load()方法:从数据库中加载Java对象

find()方法:从数据库中查询Java对象

Session是一个轻量级对象,通常每一个Session实例和一个数据库事务绑定,即没执行一个数据库事务,都必须先创建一个新的Session实例。如果事务执行出现异常,应撤销事务。无论事务是否执行成功,最后都应该关闭Session。










本文转自 LinkedKeeper 51CTO博客,原文链接:http://blog.51cto.com/sauron/1236076,如需转载请自行联系原作者
目录
相关文章
|
Java 关系型数据库 数据库连接
《Hibernate上课笔记》---class1---Hibernate简介
《Hibernate上课笔记》---class1---Hibernate简介
75 0
《Hibernate上课笔记》---class1---Hibernate简介
|
XML Java 数据库连接
《Hibernate上课笔记》----class4----Hibernate继承关系映射实现详解
《Hibernate上课笔记》----class4----Hibernate继承关系映射实现详解
101 0
《Hibernate上课笔记》----class4----Hibernate继承关系映射实现详解
|
XML Java 数据库连接
《Hibernate上课笔记》-----class5----Hibernate实现一对一关联映射
《Hibernate上课笔记》-----class5----Hibernate实现一对一关联映射
75 0
《Hibernate上课笔记》-----class5----Hibernate实现一对一关联映射
|
XML Java 数据库连接
《Hibernate上课笔记》------class6------Hibernate实现一对多关联映射
《Hibernate上课笔记》------class6------Hibernate实现一对多关联映射
68 0
《Hibernate上课笔记》------class6------Hibernate实现一对多关联映射
|
XML Java 数据库连接
《Hibernate上课笔记》-----class7----Hibernate实现多对多关联映射
《Hibernate上课笔记》-----class7----Hibernate实现多对多关联映射
100 0
《Hibernate上课笔记》-----class7----Hibernate实现多对多关联映射
|
SQL Java 数据库连接
《Hibernate上课笔记》-----class8----Hibernate的检索方式和检索策略
《Hibernate上课笔记》-----class8----Hibernate的检索方式和检索策略
112 0
《Hibernate上课笔记》-----class8----Hibernate的检索方式和检索策略
|
Java 数据库连接 数据库
《Hibernate上课笔记》----class2----Hibernate的增删改查操作
《Hibernate上课笔记》----class2----Hibernate的增删改查操作
111 0
|
SQL Java 数据库连接
《Hibernate上课笔记》-----class3----Hibernate的单实体映射
《Hibernate上课笔记》-----class3----Hibernate的单实体映射
126 0
|
Java 数据库连接 数据库
hibernate常见异常笔记(11)
hibernate常见异常笔记(11)
162 0
|
Java 数据库连接
hibernate常见异常笔记(10)
hibernate常见异常笔记(10)
111 0