hibernate操作步骤
实现以下功能
有一个学生表
学号 姓名 年龄 地址 电话
实现 新增学生 查询所有学生信息 根据学号删除学生 根据学号修改学生信息
1、导入jar
将oracle安装目录中的jar 通过maven命令 安装到本地仓库

2、maven命令安装到本地仓库
Mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.1.0 -Dpackaging=jar -Dfile=D:\jar\ojdbc6.jar
|
3、在pom.xml中添加坐标
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.1.0</version>
</dependency>
|
4、添加hibernate的坐标
不想自己导jar可以改一下版本号,从阿里云下载的jar包
<!-- https://mvnrepository.com/artifact/ojdbc/ojdbc -->
<!-- 添加oracle驱动依赖 --> <dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
|
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.3.6.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-nop --> <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.7.25</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j --> <dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.jboss.logging/jboss-logging --> <dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.3.0.Final</version>
</dependency>
|
5、建立hibernate配置文件 默认名字为: hibernate.cfg.xml
a.从参考文档中copy(文件头别忘了)
b.修改对应的数据库连接
c.注释暂时用不上的内容
<?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>
<!-- Database connection settings -->
<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" >scott</property>
<property name="connection.password">tiger</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size" >1</property>
<!-- SQL dialect 方言 -->
<property name="dialect" >org.hibernate.dialect.Oracle10gDialect</property>
<!-- Enable Hibernate's automatic session context management 线程 单线程 -->
<!-- 在代码中获取session有两种方式,其中一种需要添加该配置 -->
<property name="current_session_context_class" >thread </property>
<!-- Echo all executed SQL to stdout -->
<!-- 在控制台输出sql -->
<property name="show_sql" >true </property>
<!-- Drop and re-create the database schema on startup -->
<!-- 策略 -->
<property name="hbm2ddl.auto" >update </property>
<!-- 注解mapping文件 -->
<mapping resource="org/hibernate/tutorial/domain/Event.hbm.xml"/>
</session-factory>
</hibernate-configuration>
|
6、创建持久化类
a.对数据库student表进行操作
b.创建包com.vp.pojo
c. 创建实体类 Student
package com.vp.pojo;
import java.io.Serializable;
import java.util.Objects;
/**
* @Description:
* @Author: Li.Hong.Yue
* @Establish: 2018-10-23 20:38
**/
public class Student implements Serializable{
private Integer stuid;
private String stuname;
private Integer age;
private String address;
private String phone;
public Integer getStuid() {
return stuid;
}
public void setStuid(Integer stuid) {
this.stuid = stuid;
}
public String getStuname() {
return stuname;
}
public void setStuname(String stuname) {
this.stuname = stuname;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return Objects.equals( getStuid(), student.getStuid() ) &&
Objects.equals( getStuname(), student.getStuname() ) &&
Objects.equals( getAge(), student.getAge() ) &&
Objects.equals( getAddress(), student.getAddress() ) &&
Objects.equals( getPhone(), student.getPhone() );
}
@Override
public int hashCode() {
return Objects.hash( getStuid(), getStuname(), getAge(), getAddress(), getPhone() );
}
@Override
public String toString() {
return "Student{" +
"stuid=" + stuid +
", stuname='" + stuname + '\'' +
", age=" + age +
", address='" + address + '\'' +
", phone='" + phone + '\'' +
'}';
}
}
|
7、创建Student类的映射文 Student.hbm.xml(在该类的包下面创建)
a.参考文档copy(文件头别忘了)
b.id元素中填写主键
c. generator取值范围"native"由Hibernate根据使用的数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式。
d.字段名与列名相同,列名可以省略不写(表名一样)
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.vp.pojo">
<class name="Student">
<id name="stuid" >
<generator class="native"/>
</id>
<property name="stuname" />
<property name="age" />
<property name="address" />
<property name="phone"/>
</class>
</hibernate-mapping>
|
8、将映射文件加入到配置文件hibernate.cfg.xml中.
a.参考文档
b. <mapping resource="com/hibernate/pojo/ Student.hbm.xml" />
9、编写测试类 Main 在Main中对Dept表进行操作
a.参考文档
b.创建工具类
package com.vp.util;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
/**
* @Description:
* @Author: Li.Hong.Yue
* @Establish: 2018-10-23 20:58
**/
public class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
try {
// Create the SessionFactory from hibernate.cfg.xml
return new Configuration().configure().buildSessionFactory();
}
catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
|
c.测试类
public static void main( String[] args )
{
System.out.println( "Hello World!" );
Session session= HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
/*Student student=new Student();*/
/*新增*/
/*student.setStuid( 5 );
student.setStuname( "C" );
student.setAge( 19 );
student.setAddress( "CC" );
student.setPhone( "1774853165" );
session.save( student );*/
/*删除*/
/*student.setStuid( 5 );
session.delete( student );*/
/*更新*/
/*student.setStuid( 4 );
student.setStuname( "哈哈" );
student.setAge( 19 );
student.setAddress( "哈哈" );
student.setPhone( "1774853165" );
session.update( student );*/
/*单个查询*/
Student student=(Student)session.get( Student.class,1 );
System.out.println("student:"+student);
session.getTransaction().commit();
HibernateUtil.getSessionFactory().close();
}
|