hibernate入门

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>

时间: 2024-10-08 10:08:56

hibernate入门的相关文章

史上最简单的Hibernate入门简单介绍

事实上Hibernate本身是个独立的框架,它不须要不论什么web server或application server的支持.然而,大多数的Hibernate入门介绍都加入了非常多非Hibernate的东西,比方: Tomcat, Eclipse, Log4J,Struts, XDoclet, 甚至JBoss.这easy让人产生Hibernate复杂难懂的误解,特别是打击了刚開始学习的人的积极性. 在这篇文章将不涉及Eclipse, log4j, Struts, Tomcat, XDoclet,

Hibernate入门第二课 Hibernate Tools for Eclipse Plugins安装

Hibernate入门第二课 Hibernate Tools for Eclipse Plugins安装 你们可以直接去,http://blog.csdn.net/wei_chong_chong/article/details/52979683,楼主写的挺好的. 自己心得: Hibernate装了好久都装不上去,不是安装过程出了问题,原来是下载的那些软件根本就不对,虽然都有hibertane的英文,但是具体名称要看懂啊,最好做到和视频里面一模一样.

Hibernate入门教程

上一章我们学了一下Hibernate的配置和单张表的操作,这一章说一下Hibernate中一对一的配置 Hibernate入门教程 第二章 Hibernate的一对一单边双边配置.以及增删改查 预备知识: 1.fetch ,可以设置fetch = "select" 和 fetch = "join" fetch ="select"是在查询的时候先查询出一端的实体,然后在根据一端的查询出多端的实体,会产生1+n条sql语句; fetch = &quo

【转】Hibernate入门实例

1. 环境配置 1.1 hiberante环境配置 hibernate可实现面向对象的数据存储.hibernate的官网:http://hibernate.org/ 官网上选择hibernate ORM,可以下载最新的hibernate,还有配套的document教程 http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/ .下载到的hibernate文件夹中有document文档(hibernate\documenta

Hibernate入门篇——第一个Hibernate应用

Hibernate入门 第一步: 挑选jar包 在工程下新建lib文件夹,然后将Hibernate基本包复制进去.可以采用Maven来获取这些包: <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>4.2.7.Final</version> </dependency> 也可

第四章 Hibernate入门

第四章 Hibernate入门4.1 框架技术    4.1.1 框架的概念        框架是一个提供了可重用的公共结构的半成品.    4.1.2 主流框架        4.1.2.1 Struts框架        4.1.2.2 Struts2框架        4.1.2.3 Hibernate框架            一个优秀的持久化框架,负责简化对象数据保存到数据库中,或从数据库中读取数据并封装到对象的工作.        4.1.2.4 Spring框架4.2 Hibern

Hibernate入门案例及增删改查

一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private Integer age; private String name; public Integer getSid() { return sid; } public void setSid(Integer sid) { this.sid = sid; } public Integer getAge() {

Hibernate入门_增删改查

一.Hibernate入门案例剖析:  ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private Integer age; private String name; public Integer getSid() { return sid; } public void setSid(Integer sid) { this.sid = sid; } public Integer getAge()

(01)Hibernate入门

1.Hibernate在SSH中的地位 SSH 序号 技术 作用 1 Struts 基于mvc模式的应用层框架技术! 2 Spring 创建对象.处理对象的依赖关系以及框架整合! 3 Hibernate 基于持久层的框架(数据访问层使用)! 2.DAO层的代码是如何编写的? (1)操作XML数据 (2)使用Jdbc技术 a)原始的jdbc操作, Connection/Statement/ResultSet b)自定义一个持久层框架, 封装了dao的通用方法 c)DbUtils组件, 轻量级的da

Hibernate 入门 04 - Hibernate中Java对象的三种状态

目录:(后续不断更新...) Hibernate 入门 01 - 框架技术 (介绍Hibernate框架的发展由来) Hibernate 入门 02 - Hibernate介绍及其环境搭建 Hibernate 入门 03 - 使用Hibernate完成持久化操作 Hibernate 入门 04 - Hibernate中Java对象的三种状态 ▁▃▅ Hibernate中Java对象的三种状态▅▃▁ 1. Java对象的三种状态 当应用通过调用Hibernate API与框架发生交互时,需要从持久