Hibernate基础-HelloWord

1. ORM :ORM (Object /Relation
Mapping ): 对象/关系映射(理解)

1) ORM 主要解决对象 -关系的映射

2) .ORM的思想:将关系数据库中表中的记录映射成为对象,以对象的形式展现,程序员可以把对数据库的操作转化为对对象的操作。

2. Hibernate 的 HelloWord

1) . 加入 jar 包:加入到当前项目的 classpath 下

hibernate-release-4.2.4.F inal\lib\required\*.jar(所有的包)
                                          

MySQL 的驱动mysql -connector -java -5.1.29 -bin.jar

2) . 配置 hibernate 的配置文件: hibernate.cfg.xml

①. 利用 hibernate 插件生成 hibernate.cfg.xml

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

</session -factory >

</hibernate-configuration>

②. 编辑 hibernate.cfg.xml 文件

I. 加入链接数据库的基本信息:

<! -- 配置连接数据库的基本信息 -->

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

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

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

<property
name ="connection.url" >jdbc :mysql:///hibernate4</property>

II. 配置 Hibernate 使用的数据库方言:

每一种数据库使用的基本语法会有细微的区别,例如分页 MySQL 使用 limit,而 Oracle 使用 rownum。这就需要告诉 Hibernate 底层使用的是哪一种数据库

<! -- 配置 Hibernate 的数据库方言 -->

<property
name ="dialect" >org.hibernate.dialect.MySQLInnoDBDialect </property >

注意:方言对应的类来自于 hibernate-release- 4.2.4.Final\project\etc\hibernate.properties 中

III. 编辑 Hibernate 的一般属性

<! -- 创建数据表的策略(了解,最多使用的值是 update) -->

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

> create : 每次运行都会删除上一次的表 ,重新生成表 , 哪怕二次没有任何改变

> create -drop :会根据 .hbm.xml 文件生成表, 但是SessionFactory 一关闭,  表就自动删除

> update :最常用的属性值,也会根据 .hbm.xml 文件生成表 , 但若 .hbm.xml  文件和数据库中对应的数据表的表结构不同 ,

Hiberante  将更新数据表结构,但不会删除已有的行和列

> validate : 会和数据库中的表进行比较 , 若 .hbm.xml 文件中的列在数据表中不存在,则抛出异常

<! -- 是否打印 SQL
-->

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

<! -- 是否格式化 SQL
-->

<property
name ="format_sql" >true</property>

3) . 编写实体类( POJO)及 Hibernate 映射文件: xxx.hbm.xml

I. 编写一个 POJO :必须包含一个 OID 字段和数据表主键对应;必须有一个无参数的构造器;为字段定义 getter、 setter;非 final 类

II. 由 hibernate 插件生成 xxx.hbm.xml 文件

注意:需要对文件进行简单的修改:修改主键生成方式(使用 id 的 generator 子节点的 class 属性配置主键的生成方式, native 表示使用数据库本地的方式来

生成主键, MySQL 会自动的选用 auto_increment,而 Oracle 则使用序列的方式)

<generator
class ="assigned" /> 修改为 <generator
class="native" />

III. 在 hibernate 配置文件(hiberante.cfg.xml )中关联 hibernate 持久化类的映射文件

<mapping
resource ="com/atguigu/hibernate/entities/News.hbm.xml" />

4) . 通过 Hibernate
API 完成持久化操作

1. 创建 SessionFactory : Session 的工厂类。SessionFactory 是线程安全的,一般地,在一个 Java 应用中只有一个 SessionFactory 实例

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

ServiceRegistry serviceRegistry = new
ServiceRegistryBuilder().applySettings( configuration.getProperties())

.buildServiceRegistry ();

SessionFactory sessionFactory = configuration.buildSessionFactory (serviceRegistry );

2. 创建 Session : 表示 Hibernate 应用程序和数据库的一次会话

Session session = sessionFactory.openSession ();

3. 开启事务

Transaction transaction = session.beginTransaction ();

4. 执行持久化操作

//save

//session.save (news );

//利用 OID 加载对象

News news2 = (News ) session.get (News.class , 1);

System.out.println (news2 );

news2.setContent ("myBatis" );

5. 提交事务

transaction.commit ();

6. 关闭 Session

session.close ();

7. 关闭 SessionFactory

sessionFactory.close ();

★写测试类的时候一般采用注解更方便些:

public class Testing {

private SessionFactory sessionFactory ;

private Session session ;

private Transaction transaction = null ;

@Before

public void init (){

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

ServiceRegistry serviceRegistry = new
ServiceRegistryBuilder().applySettings( configuration.getProperties()).buildServiceRegistry();

sessionFactory = configuration.buildSessionFactory (serviceRegistry );

session = sessionFactory.openSession ();

transaction = session.beginTransaction ();

}

@After

public void destroy (){

transaction.commit ();

session.close ();

sessionFactory.close ();

}

@Test

public void test (){

//测试部分

}

}

时间: 2024-07-30 16:26:12

Hibernate基础-HelloWord的相关文章

一、Hibernate基础

1.工作原理-ORM 读取并解析hibernate.cfg.xml配置文件 由hibernate.cfg.xml中的<mapping resource="com/**/*.hbm.xml"/>读取并解析映射信息 创建SessionFactory 打开Sesssion 创建事务Transation 持久化操作 提交事务 关闭Session 关闭SesstionFactory2.增删改查 session.save(object); session.delete(object);

hibernate基础(1)

hibernate基础1.hibernate介绍与动手入门体验  问题:模型不匹配(java对象模型与数据库关系模型不匹配)  解决: 1.使用JDBC手工转换        2.使用ORM(Object Relation Mapping对象关系映射)框架,有Hibernate,TopLink,OJB  下载地址http://www.hibernate.org  3.2.5版本  安装配置:    配置文件:hibernate.cfg.xml,hibernate.properties 这两个文件

【SSH三大框架】Hibernate基础第十二篇:load()懒加载分析以及一对一、一对多、多对一、多对多懒加载的分析

一.懒加载的定义: 懒加载:在WEB应用程序中,经常会需要查询数据库,系统的响应速度在很大程度上是与数据库交互的响应.因此,如果能够优化与数据库的交互速度,则能够大大提高WEB应用的响应速度. 例如:当有一个Student类和一个Teacher类.当我们加载一个学生的所有信息,包括:学号,姓名等属性后,此时Student类中的Teacher类型的属性为null,当我们需要知道这个Student对应的Teacher属性的时候,我们才去加载这个Teacher对象. 如果,我们只需要知道学生信息,我们

Hibernate 基础

× ORM (Object/Relationsship Mapping):对象/关系映射 利用面向对象思想编写的数据库应用程序最终都是把对象信息保存在关系型数据库中,于是要编写很多的底层数据库相关的SQL语句.便有了ORM 过多编写底层SQL语句的弊端: 1.不同的数据库使用的SQL语法不通.比如PL/SQL(Oracle)与T/SQL(Microsoft[SQLServer]) 2.同样的功能在不同的数据库中有不同的实现方式.比如:分页SQL 3.程序过分你依赖SQL会对程序的移植.扩展以及维

Hibernate基础学习(四)&mdash;对象-关系映射(上)

一.映射对象标识符      Java语言按内存地址来识别或区分同一个类的不同对象,而关系数据库按主键值来识别或区分同一个表的不同记录.Hibernate使用对象标识符(OID)来建立内存中的对象和数据库表中的记录的对应关系,对象的OID和数据库表的主键对应,为了保证OID的唯一性和不可变性,应该让Hibernate,而不是应用程序来为OID赋值.     Hibernate推荐在数据表中使用代理主键,即不具备业务含义的字段.代理主键通常为整型,因为整型比字符串要节省更多数据库空间.     在

Hibernate基础配置

在hibernate.cfg.xml中的基础配置: show_sql format_sql hbm2ddl.auto :有四个选项  validate . update . create . create-drop create :数据库中没有表的话会自动创建. update: 原来有表,但是在配置文件中表的结构修改了,会自动更新数据库中的表. 通过配置文件或者annotation自动建表 搭建日志环境并配置显示DDL语句(建表语句) 搭建Junit环境(注意Junit的Bug) 表名和类名不同

Hibernate基础篇

一.是什么? Hibernate是一个数据访问框架(持久层框架),在项目中利用Hibernate框架可以实现对数据库的增删改查操作,为业务层构建一个持久层.使用该框架可以简化数据操作代码,程序员可以将更多的精力放在业务编写上.其本质上是对JDBC技术的封装,Hibernate和JDBC的关系类似于Jquery和Javascript的关系.如图所示: 二.设计原理? Hibernate框架是一款ORM工具.基于ORM设计思想开发出来的. ORM:Object--Relation--Mapping对

hibernate基础dao类

功能:数据库的保存.更新.删除:sql.hql查询:分页查询:调用存储过程 基础dao类,BaseDaoImpl.class 1 import java.io.Serializable; 2 import java.sql.CallableStatement; 3 import java.sql.Connection; 4 import java.sql.ResultSet; 5 import java.sql.SQLException; 6 import java.text.MessageFo

Hibernate基础知识整理(二)

关联映射多对一(Employee - Department)一对多(Department - Employee)一对一(Person - IdCard)多对多(teachet - student)组件映射(User - Name)集合映射(set,list,map,bag)inverse和cascade(Employee - Department) create table Department(id int primary key,name varchar(20)); create table