博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hibernate入门
阅读量:5123 次
发布时间:2019-06-13

本文共 4145 字,大约阅读时间需要 13 分钟。

Hibernate是数据持久化工具,也是一个开放源代码的ORM解决方案。Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供面向对象的数据访问API。

使用Hibernate完成持久化操作。需要编写的代码如:
Session session=HibernateUtil.currentSession();
Query query=session.createQuery("from User");
List<User> users=(List<User>) query.list();
Hibernate是一个自定义的工具类,用于获取Hibernate的Session对象,session是Hibernate执行持久化操作的核心API。Hibernate处理数据库查询时,编写的代码非常简洁,作为查询结果,可以直接获得一个存储着User的实例的list集合实例,避免了繁琐的重复性的数据转换过程。
Hibernate框架的优点:
(1)Hibernate功能强大,是java应用与关系数据库之间的桥梁,较之JDBC方式操作数据库,代码量大大减少,提高了持久化代码的开发速度,降低了维护成本。
(2)Hibernate支持许多面向对象的特征。如组合,继承,多态等。使得开发人员不必再面向业务领域的对象模型和面向数据库的关系数据模型之间来回切换,方便开发人员进行领域驱动的面向对象的设计与开发。
(3)可移植性好,系统不会绑定在某个特定的关系型数据库上,对于系统更换数据库,通过只需要修改Hibernate配置文件即可正常运行。
(4)Hibernate框架开源免费。可以在需要时研究源代码,改写源代码进行功能的定制,具有可扩展性。
Hibernate的缺点:
(1)不适合以数据为中心,大量使用存储过程的应用。
(2)大规模的批量插入,修改和删除不适合用Hibernate。
Hibernate环境搭配:
1.下载jar文件
2.部署jar文件
3.创建配置文件Hibernate.cfg.xml
4.创建持久化类和映射文件
使用Hibernate完成持久化操作
使用Hibernate操作数据库的七个步骤:
(1)读取并解析配置文件及映射文件
Configuration cf=new Configuration().configure();
(2)依据配置文件和映射文件的信息,创建SessionFactory对象
SessionFactory factory=cf.buildSessionFactory();
(3)打开Session
Session session=factory.openSession();
SessionFactory负责创建Session对象。
Session是Hibernate持久化操作的基础,Session作为贯穿Hibernate的持久化管理器的核心,提供了众多持久化方法,如save(),delete(),update(),get(),load()等,通过这些方法,即可透明地完成对象的增删改查。
(4)开始一个事务
Transaction tx=session.beginTransaction();
(5)数据库操作
session.save(dog); //保存操作
(6)结束事务
tx.commit(); //提交事务
或 tx.rollback(); //回滚事务
(7)如果是通过SessionFactory的openSession()方法获取的Session对象,则需关闭session
session.close();
-------------------------------------------Hibernate第一个案例----------------------------------------------------
首先创建一个类,并写上属性,进行封装
public class Dog {
private String dname;
private int dage;
private int did;
创建小配置映射文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" [
<!ENTITY types SYSTEM "classpath://your/domain/types.xml">]>

<hibernate-mapping package="cn.happy.entity">

<class name="Dog" table="Dog">
<id name="did" column="did">
<generator class="native"/>
</id>
<property name="dname" column="dname"></property>
<property name="dage" column="dage"></property>
</class>

</hibernate-mapping>

创建大配置
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<property name="connection.username">happyy2165</property>
<property name="connection.password">happyy2165</property>

<!--SQL dialect SQL方言-->

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

<!-- &lt;!&ndash; JDBC connection pool (use the built-in) &ndash;&gt;

<property name="connection.pool_size">1</property>
-->
<!--打印SQL控制台-->
<property name="show_sql">true</property>

<!--自动构建表结构 create先delete表结构 再创建,update直接更新表数据-->

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

<mapping resource="cn/happy/entity/Dog.hbm.xml"/>

</session-factory>

</hibernate-configuration>

测试类
public class Testhibernate01 {
@Test
public void test01(){
//1.构建Configuration对象,读取了大配置
Configuration cf=new Configuration().configure();
//2.构建工厂
SessionFactory factory=cf.buildSessionFactory();
//3.session对象 openSession()
Session session=factory.openSession();

// Dog dog=session.load(Dog.class,1);

Transaction tx=session.beginTransaction();

Dog dog=new Dog();
dog.setDname("啦啦");
dog.setDage(20);
session.save(dog);
tx.commit();
System.out.println("OK!");
session.close();
}
}
pom.xml
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.10.Final</version>
</dependency>

<!-- https://mvnrepository.com/artifact/javax.transaction/jta-->

<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.1</version>
</dependency>

转载于:https://www.cnblogs.com/wangbenqing/p/7545670.html

你可能感兴趣的文章
类库与框架,强类型与弱类型的闲聊
查看>>
php match_model的简单使用
查看>>
SIP服务器性能测试工具SIPp使用指导(转)
查看>>
回调没用,加上iframe提交表单
查看>>
大话文本检测经典模型:EAST
查看>>
待整理
查看>>
一次动态sql查询订单数据的设计
查看>>
C# 类(10) 抽象类.
查看>>
Vue_(组件通讯)子组件向父组件传值
查看>>
jvm参数
查看>>
我对前端MVC的理解
查看>>
Silverlight实用窍门系列:19.Silverlight调用webservice上传多个文件【附带源码实例】...
查看>>
2016.3.31考试心得
查看>>
mmap和MappedByteBuffer
查看>>
STM32单片机使用注意事项
查看>>
swing入门教程
查看>>
好莱坞十大导演排名及其代表作,你看过多少?
查看>>
hihocoder1187 Divisors
查看>>
Azure 托管镜像和非托管镜像对比
查看>>
js window.open 参数设置
查看>>