1.1 Hibernate环境搭建
1. 创建基于Meven的Java项目,pom.xml中的配置如下
<?xml version="1.0" encoding="UTF-8"?>
<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.qingyun</groupId>
<artifactId>hibernate_chapter01_example</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!--引入Oracle所需依赖-->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc7</artifactId>
<version>12.1.0.2</version>
</dependency>
<!--引入Hibernate所需依赖-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.6.10.Final</version>
</dependency>
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.12.0.GA</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.7.2</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
Hibernate所需jar文件说明
名称 | 说明 |
---|---|
antlr-2.7.6.jar | 语法分析器 |
commons-collections-3.1.jar | 各种集合类和工具类的封装 |
dom4j-1.6.1.jar | XML的读写 |
javassist-3.12.0.GA.jar | 分析、编辑和创建Java字节码的类库 |
jta-1.1.jar | Java事务API |
slf4j-api-1.6.1.jar | 日志输出 |
hibernate-jpa-2.0-api-1…0.1.Final.jar | 提供对JPA(Java持久化API)规范的支持 |
2.创建Hibernate配置文件hibernate.cfg.xml
Hibernate配置文件主要用于配置数据库连接和Hibernate运行时所需的各种特性。在项目的resources目录下添加配置文件,该配置文件需要配置数据库连接信息和Hibernate的参数。
<?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>
<!--数据库URL-->
<property name="connection.url">
jdbc:oracle:thin:@localhost:1521/orcl
</property>
<!--数据库用户-->
<property name="connection.username">scott</property>
<!--用户密码-->
<property name="connection.password">123456</property>
<!--数据库JDBC驱动-->
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<!--每个数据库都有对应的方言(Dialect)以匹配其平台特性-->
<property name="dialect">
org.hibernate.dialect.Oracle10gDialect
</property>
<!--指定当前session范围和上下文-->
<property name="current_session_context_class">thread</property>
<!--是否格式化SQL-->
<property name="format_sql">true</property>
<!--是否打印sql语句-->
<property name="show_sql">true</property>
<!--映射文件配置,注意文件名必须包含其相对于classpath的全路径-->
<mapping resource="com/qingyun/pojo/Dept.hbm.xml"/>
</session-factory>
</hibernate-configuration>
3.创建持久化类和映射文件
- 创建实体类
package com.qingyun.pojo;
import java.io.Serializable;
public class Dept implements Serializable {
private Byte deptNo;
private String deptName;
private String location;
public Byte getDeptNo() {
return deptNo;
}
public void setDeptNo(Byte deptNo) {
this.deptNo = deptNo;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
}
Dept持久化类有一个deptNo属性,用来标识Dept类的每一个实例。deptNo属性又称为id属性。在Hibernate中,这个id被称为对象标识符(Object Identifier,OID),一个Dept实例和DEPT表中的一条记录对应。
- 在实体类同包目录下创建映射文件,映射文件用于告诉Hibernate,JavaBean实体属性对应数据库中的哪一个字段。在Hibernate中,映射文件通常与对应的持久化类同名,并以“.hbm.xml作为后缀”
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.qingyun.pojo.Dept" table="`DEPT`" schema="scott" dynamic-update="true">
<id name="deptNo" type="java.lang.Byte" column="`DEPTNO`">
<generator class="increment"></generator>
</id>
<property name="deptName" type="java.lang.String" column="`DNAME`"/>
<property name="location" type="java.lang.String">
<column name="`LOC`"></column>
</property>
</class>
</hibernate-mapping>