hibernate环境搭建

持久化概念:

持久化就是把数据(如内存中的对象)同步保存到数据库或某些存储设备中(如磁盘文件中、XML数据文件中)等等。

在软件的分层体系结构中,持久化层是与数据库打交道的逻辑层.

JDBC-的问题:

代码繁琐:

一个插入对象的例子

public void addAccount(final Account account) throws DAOException,AccountAlreadyExistException{
final Connection conn=getConnection();
PreparedStatement pstmt=conn.prepareStatement(“insert into account values(?,?,?)”);
pstmt.setString(1.account.getUserName));
pstmt.setInt(2,account.getPassWord));
pstmt.setString(3.account.getSex);
pstmt.execute();
conn.close();

如果account表有上百个字段,则pstmt.setXX()语句要写上百次,这明显不合适

非面向对象

对于数据库的操作不是面向对象,是面向关系数据库的

ORM简介

ORM(object relational mapping)是对象到关系的映射

它把对表直接进行的操作变成对持久化类的属性和方法的直接操作

ORM作为分层体系中的持久层.

ORM技术可以极大地提高开发效率和开发时间,同时开发质量也更容易得到保证

hibernate核心接口

Session、SessionFactory、Transaction、Query和Configuration

Session:

Session负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。

但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。

这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。

SessionFactory

SessionFactroy负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。

这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,

一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。

Configuration

Configuration负责配置并启动Hibernate,创建SessionFactory对象。

在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。

Transaction

Transaction负责事务相关的操作。

它是可选的,可发人员也可以设计编写自己的底层事务处理代码.

Query:

Query负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。

环境搭建:

依赖包:

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.demo</groupId>
	<artifactId>my-hibernate</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<dependencies>
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
			<version>3.6.10.Final</version>
		</dependency>
		<dependency>
			<groupId>org.hibernate.javax.persistence</groupId>
			<artifactId>hibernate-jpa-2.0-api</artifactId>
			<version>1.0.0.Final</version>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.7</version>
		</dependency>
		<dependency>
			<groupId>org.javassist</groupId>
			<artifactId>javassist</artifactId>
			<version>3.18.2-GA</version>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.10</version>
		</dependency>
		<dependency>
		<!-- 自己手动添加到maven本地仓库 -->
			<groupId>oracle</groupId>
			<artifactId>ojdbc</artifactId>
			<version>14</version>
		</dependency>
	</dependencies>
</project>

注意:ojdbc14.jar需要手动添加到maven本地仓库,自定义坐标

hibernate.cfg.xml:

<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory name="foo">
		<!-- 显示sql -->
		<property name="show_sql">true</property>
		<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
		<property name="hibernate.connection.url">jdbc:oracle:thin:@127.0.0.1:1521:orcl</property>
		<property name="hibernate.connection.username">diankun</property>
		<property name="hibernate.connection.password">diankun</property>
		<!-- 生成sql语句采用的语法 -->
		<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
		<!-- 自动创建表结构 -->
		<property name="hibernate.hbm2ddl.auto">create</property>
		<!-- bean与表的映射 -->
		<mapping resource="com/demo/model/Student.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

Student:

package com.demo.model;

public class Student {
	private int studentId ;
	private String studentName ;
	private int age;
	public int getStudentId() {
		return studentId;
	}
	public void setStudentId(int studentId) {
		this.studentId = studentId;
	}
	public String getStudentName() {
		return studentName;
	}
	public void setStudentName(String studentName) {
		this.studentName = studentName;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

Student.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.demo.model">

    <class name="Student" table="t_student">
        <id name="studentId" column="student_id">
            <generator class="sequence"/>
        </id>
        <property name="studentName" column="student_name"/>
        <property name="age" />
    </class>
</hibernate-mapping>

Test

package com.demo;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.junit.Before;
import org.junit.Test;

public class StudentTest {
	SessionFactory sessionFactory ;
	@Before
	public void init(){
		sessionFactory=new Configuration().configure().buildSessionFactory();
	}

	@Test
	public void createTest(){
	}

}

运行mvn test ,数据库自动生成表结构

时间: 2024-12-26 11:08:36

hibernate环境搭建的相关文章

Hibernate学习之——Hibernate环境搭建

之前在写关于安卓闹钟的教程,写了一半就没后一半了,其实自己也没做好,在校外实习,校内毕业实习又有任务,只能先放放了,等毕业实习结束之后,在继续安卓闹钟开发之旅,相信这个时间不会很久的.现在毕业实习用到的SSH框架(Struts+Spring+Hibernate),自己没有多少时间去好好学习,但是还是想把学到的东西记录下来. 一.Hibernate简介 1.什么是Hibernate? Hibernate是数据持久层的一个轻量级框架.数据持久层的框架有很多比如:iBATIS,myBatis,Nhib

hibernate环境搭建及配置文件

首先要下载好hibernate文件包 然后新建项目: 1.导入jar包(打开下载好的文件包,找到lib文件下的required文件包,里面有jar包) 注意:初学者可以暂时copy一下代码. 2.新建一个class文件,内容如下: public class Person { //类的属性 private Integer id; private String name; private String password; private Date birthday; //无参构造函数 public

Hibernate环境搭建超详细

前言 环境搭建其实可以简单到导入相关jar包即可. 但是对于学习来说,这个环境搭建的内容还是挺多的,目的是提供一个让我们如何快速学习和掌握类库的学习环境.作为程序猿,学习和使用类库是必须掌握的技能.如何快速的学习和使用类库,这里有很多经验和技巧.比方说参照官方文档中教程.api.在ide中加入如javadoc支持等等. 官方文档是我们学习一个类库中最重要的手段和途径,书籍.博客教程的作者都是根据官方文档来学习这些类库的.官方文档提供了最新的.系统的.最准确的学习资料.虽然这些文档有很多都是英文的

Hibernate环境搭建+struts整合

说明:本文档,是和struts2+hibernate的整合示例. lib下还有struts2的jar包,本示例没有显示.struts2的搭建参考struts2的环境搭建 一下载hibernate的jar包,并将相关jar包导入的项目web-inf的lib下 二:配置hibernate.cfg.xml文档 1 <!DOCTYPE hibernate-configuration PUBLIC 2 "-//Hibernate/Hibernate Configuration DTD 3.0//EN

springmvc+spring-data-jpa+hibernate环境搭建与配置

1.JPA诞生的缘由是为了整合第三方ORM框架,建立一种标准的方式,百度百科说是JDK为了实现ORM的天下归一,目前也是在按照这个方向发展,但是还没能完全实现.在ORM框架中,Hibernate是一支很大的部队,使用很广泛,也很方便,能力也很强,同时Hibernate也是和JPA整合的比较良好,我们可以认为JPA是标准,事实上也是,JPA几乎都是接口,实现都是Hibernate在做,宏观上面看,在JPA的统一之下Hibernate很良好的运行. 2.使用springmvc+spring-data

Spring+Springmvc+Hibernate环境搭建与配置

这里给出JavaWeb项目Spring+Springmvc+Hibernate框架环境的搭建与配置,方便以后快速创建项目.下面是以本人的一个项目为例给出的配置,不同项目具体的结构都是可以按一下结构完成的,至于配置内容则需要按照具体的项目需求更改部分内容.需要注意的是,本项目是以使用注解为前提完成的项目. 一.项目目录 首先说明一下,本项目是maven项目,采用Spring+Springmvc+Hibernate的框架,前端模板引擎采用thymeleaf,html代码存放在下面结构的templat

spring+hibernate环境搭建

整体项目结构如图: src各个包是按照springMVC建立包格式建立的,如下图: entity层的代码:有Book.java 和 Account.java package com.elgin.spring.hibernate.entity; public class Book { private int id; private String bookName; private String isbn; private float price; private int stock; public

Struts2+Spring+Hibernate环境搭建

struts-2.3.20 spring-4.1.4 hibernate-4.3.8 slf4j-1.7.10 1.在MySQL中建立数据库 mysql> create database myoa default character set utf8 2.在MyEclipse中建立Web Project 在项目上右键-Properties,设置编码为UTF-8. 3.配置Struts2 拷贝jar包(依照示例,另aopalliance.jar). 在web.xml中写入Struts Filter

Hibernate 环境搭建

Hibernate 工作流程 1.创建工程并导包 2.在src根目录下创建配置文件:hibernate.cfg.xml(也可以创建在src其他文件夹下,但是在后面的配置中,需要指明路径) 1 <?xml version='1.0' encoding='utf-8'?> 2 <!DOCTYPE hibernate-configuration PUBLIC 3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 4 &qu