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();
} |